abapgit について
abapgitは、abapGitを使ったGitベースの開発をABAP開発者向けに案内するスキルです。オンプレミスSAP、BTP ABAP Environment、gCTSでの設定、リポジトリ操作、ブランチ、CI/CD、問題の調査を扱います。
主な機能
- 01abapGit環境の設定ガイド
- 02リポジトリのクローン、プル、プッシュ
- 03ABAPのブランチと移送戦略
- 04CI/CDとabaplintの設定
- 05リポジトリの一般的な問題の調査
活用シーン
- 01SAPシステムでabapGitを設定
- 02GitとSAP間でABAPオブジェクトを移動
- 03移送ワークフローと併用するブランチの計画
- 04HTTPSまたはシリアライズの問題を調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ likweitan/ abap-skills --skill abapgitインストール後、Claude Code で/abapgitを入力して読み込まれたか確認します。
詳細
abapGit ワークフロー
abapGit を使用して、Git リポジトリ内の ABAP 開発オブジェクトを管理するためのガイドです。
ワークフロー
-
ユーザーの目的を確認します:
- abapGit を初めてセットアップする
- 既存のリポジトリをクローンする
- ABAP コードを Git リポジトリにプッシュする
- ブランチ戦略または移送戦略を設定する
- ABAP 用の CI/CD パイプラインをセットアップする
- abapGit の問題をトラブルシューティングする
-
環境を特定します:
- abapGit スタンドアロンを使用するオンプレミスの SAP システム
- SAP BTP ABAP Environment(ADT における abapGit 統合)
- gCTS(Git 対応の変更および移送システム)
-
ABAP 固有の Git ワークフローに関するベストプラクティスを用いて、実装をガイドします
abapGit の概要
| 項目 | 説明 |
|---|---|
| 概要 | ABAP 用のオープンソース Git クライアントで、SAP システム内で動作します |
| シリアライズ | ABAP オブジェクトを Git で保存するためのファイル形式に変換します |
| デシリアライズ | ファイル形式をシステム内の ABAP オブジェクトに戻します |
| 対応オブジェクト | クラス、インターフェース、CDS、関数グループ、プログラム、テーブルなど |
| インストール | abapGit スタンドアロンレポートまたは Eclipse プラグインを使用します |
セットアップ
abapGit スタンドアロンのインストール(オンプレミス)
- レポート
ZABAPGIT_STANDALONEまたはZABAPGIT_FULLを作成します - 最新バージョンを https://raw.githubusercontent.com/abapGit/build/main/zabapgit_standalone.prog.abap からダウンロードします
- 内容をレポートにコピーして、有効化します
SE38またはトランザクションZABAPGITからレポートを実行します
ADT の abapGit(BTP ABAP Environment)
- ADT で、Window → Show View → Other → abapGit Repositories を選択します
- HTTPS URL を使用してリポジトリをリンクします
- Git サービス用の通信アレンジメントが必要です
SSL 証明書
- GitHub/GitLab のルート証明書をダウンロードします
STRUST(トランザクション)→ SSL Client(Anonymous)または(Standard)からインポートします- Git プロバイダーへの HTTPS 接続に必要です
主な操作
リポジトリをクローンする
1. Open abapGit (standalone or ADT)
2. Click "+ Clone" / "Link abapGit Repository"
3. Enter repository URL (HTTPS)
4. Select target package (create if needed)
5. Select branch (default: main)
6. Pull objects into the system
変更を Git にプッシュする
1. Stage changed objects (select what to include)
2. Write a meaningful commit message
3. Push to remote branch
4. Resolve conflicts if any
Git から更新をプルする
1. Open the repository in abapGit
2. Click "Pull"
3. Review incoming changes
4. Activate pulled objects
.abapgit.xml の設定
リポジトリのルートにある .abapgit.xml ファイルで、シリアライズ設定を管理します。
<?xml version="1.0" encoding="utf-8"?>
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DATA>
<MASTER_LANGUAGE>E</MASTER_LANGUAGE>
<STARTING_FOLDER>/src/</STARTING_FOLDER>
<FOLDER_LOGIC>PREFIX</FOLDER_LOGIC>
<IGNORE>
<item>/.gitignore</item>
<item>/LICENSE</item>
<item>/README.md</item>
<item>/package.json</item>
<item>/.travis.yml</item>
</IGNORE>
<REQUIREMENTS/>
</DATA>
</asx:values>
</asx:abap>
主な設定
| 設定 | 値 | 説明 |
|---|---|---|
MASTER_LANGUAGE | E、D など | テキストのマスター言語 |
STARTING_FOLDER | /src/ | シリアライズされたオブジェクトのルートフォルダー |
FOLDER_LOGIC | PREFIX / FULL | パッケージ階層をフォルダーに対応付ける方法 |
IGNORE | ファイルパターン | デシリアライズ対象から除外するファイル |
REQUIREMENTS | ソフトウェアコンポーネント | インポート前に存在している必要がある依存関係 |
フォルダーロジック
- PREFIX:パッケージ名のプレフィックスを削除します。
Z_PKG配下のZ_PKG_SUB→sub/フォルダー - FULL:パッケージ名全体をフォルダー名にします。
Z_PKG_SUB→z_pkg_sub/
ブランチ戦略
推奨:ABAP でのトランクベース開発
main (production-ready)
└── feature/add-validation
└── feature/new-report
└── bugfix/fix-calculation
mainブランチを安定したデプロイ可能な状態に保ちます- 短期間だけ使用するフィーチャーブランチを作成します
- コードレビューを行い、プルリクエスト経由でマージします
- 開発では、ブランチごとに SAP システムを 1 つ使用します
移送ベースの戦略
DEV system ←→ feature branches
QAS system ←→ release branch
PRD system ← main branch (tags for releases)
トランスポートと Git のワークフロー
| 項目 | トランスポートベース | Git ベース(abapGit) |
|---|---|---|
| バージョン管理 | トランスポート要求 | 完全な履歴を含む Git コミット |
| コラボレーション | コピーのトランスポート | ブランチ、プルリクエスト、コードレビュー |
| ロールバック | 困難 | git revert または以前のコミットをチェックアウト |
| CI/CD | 限定的 | パイプラインとの完全な統合 |
| 複数システム | トランスポートルート | 各システムにクローン/プル |
| 競合解決 | 手動 | Git のマージツール |
ハイブリッドアプローチ
多くのチームは、デプロイにはトランスポートを引き続き使用しながら、バージョン管理に abapGit を使用しています。
- DEV システムで開発します
- 変更を Git にコミットします(abapGit push)
- トランスポート要求を使用して QAS/PRD に移動します
- Git を信頼できる唯一の情報源およびバックアップとして使用します
CI/CD 統合
CI パイプラインでの abaplint
# .github/workflows/abaplint.yml
name: abaplint
on: [push, pull_request]
jobs:
abaplint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: niclas-timm/abaplint-action@main
abaplint.json の設定
{
"global": {
"files": "/src/**/*.*"
},
"syntax": {
"version": "Cloud",
"errorNamespace": "^(Z|Y|LCL_|LIF_)"
},
"rules": {
"description": "ABAP lint configuration"
}
}
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| SSL ハンドシェイクエラー | STRUST から SSL 証明書をインポートします |
| 認可エラー | S_DEVELOP 認可オブジェクトを確認します |
| トランスポートによるオブジェクトのロック | トランスポートロックを解除または削除します |
| シリアライズエラー | abapGit でオブジェクトタイプがサポートされているか確認します |
| 名前空間の競合 | 一意の命名規則を使用していることを確認します |
| 大規模リポジトリの動作が遅い | シャロークローンを使用するか、サブパッケージに分割します |
出力形式
abapGit に関するトピックを支援する場合は、次のような構成で回答してください。
## abapGit Guidance
### Context
- Environment: [On-premise / BTP / gCTS]
- Operation: [Clone / Push / Pull / Setup]
### Steps
[Step-by-step instructions]
### Configuration
[Relevant .abapgit.xml or abaplint settings]
参考資料
- abapGit のドキュメント:https://docs.abapgit.org/
- abapGit の GitHub:https://github.com/abapGit/abapGit
- abaplint:https://abaplint.org/
関連スキル
- abap:abapGit リポジトリとの abaplint 統合に使用します
- btp-abap-environment:BTP ABAP Environment での abapGit セットアップに使用します
- abap-cloud:abapGit リポジトリが ABAP Cloud に準拠していることを確認するために使用します
コメント
Markdown 対応