Claude Code GitLab CI/CD
GitLab CI/CDを使用してClaude Codeを開発ワークフローに統合する方法について学習します
GitLab CI/CD向けClaude Codeは現在ベータ版です。エクスペリエンスを改善する過程で、機能や動作が変更される可能性があります。
この統合はGitLabによって維持されています。サポートについては、以下のGitLabイシューをご覧ください。
この統合はClaude Code CLIとSDKの上に構築されており、CI/CDジョブやカスタム自動化ワークフローでClaudeをプログラム的に使用できます。
GitLabでClaude Codeを使用する理由
- 即座のMR作成: 必要なことを説明すると、Claudeが変更と説明を含む完全なMRを提案します
- 自動実装: 単一のコマンドやメンションでイシューを動作するコードに変換します
- プロジェクト対応: Claudeは
CLAUDE.md
ガイドラインと既存のコードパターンに従います - 簡単なセットアップ:
.gitlab-ci.yml
に1つのジョブとマスクされたCI/CD変数を追加するだけです - エンタープライズ対応: データ常駐と調達要件を満たすために、Anthropic API、AWS Bedrock、またはGoogle Vertex AIを選択できます
- デフォルトで安全: ブランチ保護と承認を含むGitLabランナーで実行されます
動作原理
Claude CodeはGitLab CI/CDを使用してAIタスクを分離されたジョブで実行し、MRを通じて結果をコミットバックします:
-
イベント駆動オーケストレーション: GitLabは選択したトリガー(例:イシュー、MR、またはレビュースレッドで
@claude
をメンションするコメント)をリッスンします。ジョブはスレッドとリポジトリからコンテキストを収集し、その入力からプロンプトを構築し、Claude Codeを実行します。 -
プロバイダー抽象化: 環境に適したプロバイダーを使用します:
- Anthropic API(SaaS)
- AWS Bedrock(IAMベースアクセス、クロスリージョンオプション)
- Google Vertex AI(GCPネイティブ、Workload Identity Federation)
-
サンドボックス実行: 各インタラクションは厳格なネットワークとファイルシステムルールを持つコンテナで実行されます。Claude Codeはワークスペーススコープの権限を強制して書き込みを制約します。すべての変更はMRを通じて流れるため、レビュアーは差分を確認でき、承認も引き続き適用されます。
レイテンシを削減し、データ主権要件を満たしながら、既存のクラウド契約を使用するために地域エンドポイントを選択します。
Claudeができること
Claude Codeは、コードとの作業方法を変革する強力なCI/CDワークフローを可能にします:
- イシューの説明やコメントからMRを作成・更新
- パフォーマンス回帰を分析し、最適化を提案
- ブランチで直接機能を実装し、MRを開く
- テストやコメントで特定されたバグや回帰を修正
- フォローアップコメントに応答して、要求された変更を反復
セットアップ
クイックセットアップ
開始する最も速い方法は、.gitlab-ci.yml
に最小限のジョブを追加し、APIキーをマスクされた変数として設定することです。
-
マスクされたCI/CD変数を追加
- 設定 → CI/CD → 変数に移動
ANTHROPIC_API_KEY
を追加(マスク、必要に応じて保護)
-
.gitlab-ci.yml
にClaudeジョブを追加
ジョブとANTHROPIC_API_KEY
変数を追加した後、CI/CD → パイプラインからジョブを手動で実行してテストするか、MRからトリガーしてClaudeにブランチで更新を提案させ、必要に応じてMRを開かせます。
Anthropic APIの代わりにAWS BedrockまたはGoogle Vertex AIで実行するには、認証と環境設定について以下のAWS Bedrock & Google Vertex AIでの使用セクションをご覧ください。
手動セットアップ(本番環境推奨)
より制御されたセットアップを希望する場合、またはエンタープライズプロバイダーが必要な場合:
-
プロバイダーアクセスを設定:
- Anthropic API:
ANTHROPIC_API_KEY
をマスクされたCI/CD変数として作成・保存 - AWS Bedrock: GitLab → AWS OIDCを設定し、Bedrock用のIAMロールを作成
- Google Vertex AI: GitLab → GCP用のWorkload Identity Federationを設定
- Anthropic API:
-
GitLab API操作用のプロジェクト認証情報を追加:
- デフォルトで
CI_JOB_TOKEN
を使用するか、api
スコープでProject Access Tokenを作成 - PATを使用する場合は
GITLAB_ACCESS_TOKEN
(マスク)として保存
- デフォルトで
-
.gitlab-ci.yml
にClaudeジョブを追加(以下の例を参照) -
(オプション)メンション駆動トリガーを有効化:
- イベントリスナー(使用する場合)に「コメント(ノート)」用のプロジェクトWebhookを追加
- コメントに
@claude
が含まれる場合、リスナーにAI_FLOW_INPUT
やAI_FLOW_CONTEXT
などの変数でパイプライントリガーAPIを呼び出させる
使用例
イシューをMRに変換
イシューコメントで:
Claudeはイシューとコードベースを分析し、ブランチで変更を書き込み、レビュー用のMRを開きます。
実装ヘルプを取得
MRディスカッションで:
Claudeは変更を提案し、適切なキャッシュでコードを追加し、MRを更新します。
バグを迅速に修正
イシューまたはMRコメントで:
Claudeはバグを特定し、修正を実装し、ブランチを更新するか新しいMRを開きます。
AWS Bedrock & Google Vertex AIでの使用
エンタープライズ環境では、同じ開発者エクスペリエンスで、Claude Codeを完全にクラウドインフラストラクチャ上で実行できます。
前提条件
AWS BedrockでClaude Codeをセットアップする前に、以下が必要です:
- 希望するClaudeモデルへのAmazon Bedrockアクセスを持つAWSアカウント
- AWS IAMでOIDCアイデンティティプロバイダーとして設定されたGitLab
- Bedrock権限とGitLabプロジェクト/refsに制限された信頼ポリシーを持つIAMロール
- ロール引き受け用のGitLab CI/CD変数:
AWS_ROLE_TO_ASSUME
(ロールARN)AWS_REGION
(Bedrockリージョン)
セットアップ手順
GitLab CIジョブがOIDC経由でIAMロールを引き受けることを許可するようにAWSを設定します(静的キーなし)。
必要なセットアップ:
- Amazon Bedrockを有効化し、対象のClaudeモデルへのアクセスを要求
- まだ存在しない場合、GitLab用のIAM OIDCプロバイダーを作成
- GitLab OIDCプロバイダーに信頼され、プロジェクトと保護されたrefsに制限されたIAMロールを作成
- Bedrock呼び出しAPI用の最小権限を付与
CI/CD変数に保存する必要な値:
AWS_ROLE_TO_ASSUME
AWS_REGION
設定 → CI/CD → 変数で変数を追加:
上記のAWS Bedrockジョブ例を使用して、実行時にGitLabジョブトークンを一時的なAWS認証情報と交換します。
前提条件
AWS BedrockでClaude Codeをセットアップする前に、以下が必要です:
- 希望するClaudeモデルへのAmazon Bedrockアクセスを持つAWSアカウント
- AWS IAMでOIDCアイデンティティプロバイダーとして設定されたGitLab
- Bedrock権限とGitLabプロジェクト/refsに制限された信頼ポリシーを持つIAMロール
- ロール引き受け用のGitLab CI/CD変数:
AWS_ROLE_TO_ASSUME
(ロールARN)AWS_REGION
(Bedrockリージョン)
セットアップ手順
GitLab CIジョブがOIDC経由でIAMロールを引き受けることを許可するようにAWSを設定します(静的キーなし)。
必要なセットアップ:
- Amazon Bedrockを有効化し、対象のClaudeモデルへのアクセスを要求
- まだ存在しない場合、GitLab用のIAM OIDCプロバイダーを作成
- GitLab OIDCプロバイダーに信頼され、プロジェクトと保護されたrefsに制限されたIAMロールを作成
- Bedrock呼び出しAPI用の最小権限を付与
CI/CD変数に保存する必要な値:
AWS_ROLE_TO_ASSUME
AWS_REGION
設定 → CI/CD → 変数で変数を追加:
上記のAWS Bedrockジョブ例を使用して、実行時にGitLabジョブトークンを一時的なAWS認証情報と交換します。
前提条件
Google Vertex AIでClaude Codeをセットアップする前に、以下が必要です:
- 以下を持つGoogle Cloudプロジェクト:
- Vertex AI APIが有効
- GitLab OIDCを信頼するように設定されたWorkload Identity Federation
- 必要なVertex AIロールのみを持つ専用サービスアカウント
- WIF用のGitLab CI/CD変数:
GCP_WORKLOAD_IDENTITY_PROVIDER
(完全なリソース名)GCP_SERVICE_ACCOUNT
(サービスアカウントメール)
セットアップ手順
GitLab CIジョブがWorkload Identity Federation経由でサービスアカウントを偽装することを許可するようにGoogle Cloudを設定します。
必要なセットアップ:
- IAM Credentials API、STS API、Vertex AI APIを有効化
- GitLab OIDC用のWorkload Identity Poolとプロバイダーを作成
- Vertex AIロールを持つ専用サービスアカウントを作成
- WIFプリンシパルにサービスアカウントの偽装権限を付与
CI/CD変数に保存する必要な値:
GCP_WORKLOAD_IDENTITY_PROVIDER
GCP_SERVICE_ACCOUNT
設定 → CI/CD → 変数で変数を追加:
上記のGoogle Vertex AIジョブ例を使用して、キーを保存せずに認証します。
設定例
以下は、パイプラインに適応できる使用準備完了のスニペットです。
基本的な.gitlab-ci.yml(Anthropic API)
AWS Bedrockジョブ例(OIDC)
前提条件:
- 選択したClaudeモデルへのアクセスを持つAmazon Bedrockが有効
- GitLabプロジェクトとrefsを信頼するロールでAWSに設定されたGitLab OIDC
- Bedrock権限を持つIAMロール(最小権限推奨)
必要なCI/CD変数:
AWS_ROLE_TO_ASSUME
: Bedrockアクセス用のIAMロールのARNAWS_REGION
: Bedrockリージョン(例:us-west-2
)
BedrockのモデルIDには、リージョン固有のプレフィックスとバージョンサフィックスが含まれます(例:us.anthropic.claude-3-7-sonnet-20250219-v1:0
)。ワークフローがサポートする場合、ジョブ設定またはプロンプト経由で希望するモデルを渡してください。
Google Vertex AIジョブ例(Workload Identity Federation)
前提条件:
- GCPプロジェクトでVertex AI APIが有効
- GitLab OIDCを信頼するように設定されたWorkload Identity Federation
- Vertex AI権限を持つサービスアカウント
必要なCI/CD変数:
GCP_WORKLOAD_IDENTITY_PROVIDER
: 完全なプロバイダーリソース名GCP_SERVICE_ACCOUNT
: サービスアカウントメールCLOUD_ML_REGION
: Vertexリージョン(例:us-east5
)
Workload Identity Federationでは、サービスアカウントキーを保存する必要がありません。リポジトリ固有の信頼条件と最小権限サービスアカウントを使用してください。
ベストプラクティス
CLAUDE.md設定
リポジトリルートにCLAUDE.md
ファイルを作成して、コーディング標準、レビュー基準、プロジェクト固有のルールを定義します。Claudeは実行中にこのファイルを読み取り、変更を提案する際に規約に従います。
セキュリティ考慮事項
APIキーやクラウド認証情報をリポジトリにコミットしないでください!常にGitLab CI/CD変数を使用してください:
ANTHROPIC_API_KEY
をマスクされた変数として追加(必要に応じて保護)- 可能な場合はプロバイダー固有のOIDCを使用(長期間有効なキーなし)
- ジョブ権限とネットワーク出力を制限
- 他の貢献者と同様にClaudeのMRをレビュー
パフォーマンス最適化
CLAUDE.md
を焦点を絞って簡潔に保つ- 反復を減らすために明確なイシュー/MR説明を提供
- 暴走実行を避けるために適切なジョブタイムアウトを設定
- 可能な場合、ランナーでnpmとパッケージインストールをキャッシュ
CIコスト
GitLab CI/CDでClaude Codeを使用する際は、関連コストに注意してください:
-
GitLabランナー時間:
- ClaudeはGitLabランナーで実行され、計算分を消費します
- 詳細については、GitLabプランのランナー課金をご覧ください
-
APIコスト:
- 各Claudeインタラクションは、プロンプトと応答サイズに基づいてトークンを消費します
- トークン使用量は、タスクの複雑さとコードベースサイズによって異なります
- 詳細についてはAnthropic価格をご覧ください
-
コスト最適化のヒント:
- 不要なターンを減らすために具体的な
@claude
コマンドを使用 - 適切な
max_turns
とジョブタイムアウト値を設定 - 並列実行を制御するために同時実行を制限
- 不要なターンを減らすために具体的な
セキュリティとガバナンス
- 各ジョブは制限されたネットワークアクセスを持つ分離されたコンテナで実行されます
- Claudeの変更はMRを通じて流れるため、レビュアーはすべての差分を確認できます
- ブランチ保護と承認ルールがAI生成コードに適用されます
- Claude Codeはワークスペーススコープの権限を使用して書き込みを制約します
- 独自のプロバイダー認証情報を持参するため、コストは制御下に留まります
トラブルシューティング
Claudeが@claudeコマンドに応答しない
- パイプラインがトリガーされていることを確認(手動、MRイベント、またはノートイベントリスナー/Webhook経由)
- CI/CD変数(
ANTHROPIC_API_KEY
またはクラウドプロバイダー設定)が存在し、マスクされていないことを確認 - コメントに
@claude
(/claude
ではない)が含まれ、メンショントリガーが設定されていることを確認
ジョブがコメントを書き込めない、またはMRを開けない
CI_JOB_TOKEN
がプロジェクトに十分な権限を持っていることを確認するか、api
スコープでProject Access Tokenを使用--allowedTools
でmcp__gitlab
ツールが有効になっていることを確認- ジョブがMRのコンテキストで実行されるか、
AI_FLOW_*
変数を通じて十分なコンテキストを持っていることを確認
認証エラー
- Anthropic API用:
ANTHROPIC_API_KEY
が有効で期限切れでないことを確認 - Bedrock/Vertex用: OIDC/WIF設定、ロール偽装、シークレット名を確認;リージョンとモデルの可用性を確認
高度な設定
一般的なパラメータと変数
Claude Codeは以下の一般的に使用される入力をサポートします:
prompt
/prompt_file
: インライン(-p
)またはファイル経由で指示を提供max_turns
: やり取りの反復回数を制限timeout_minutes
: 総実行時間を制限ANTHROPIC_API_KEY
: Anthropic APIに必要(Bedrock/Vertexでは使用されません)- プロバイダー固有の環境:
AWS_REGION
、Vertex用のプロジェクト/リージョン変数
正確なフラグとパラメータは@anthropic-ai/claude-code
のバージョンによって異なる場合があります。サポートされているオプションを確認するには、ジョブでclaude --help
を実行してください。
Claudeの動作をカスタマイズ
Claudeを主に2つの方法でガイドできます:
- CLAUDE.md: コーディング標準、セキュリティ要件、プロジェクト規約を定義します。Claudeは実行中にこれを読み取り、ルールに従います。
- カスタムプロンプト: ジョブで
prompt
/prompt_file
を通じてタスク固有の指示を渡します。異なるジョブに異なるプロンプトを使用します(例:レビュー、実装、リファクタリング)。