SpyBara
Go Premium

gitlab-ci-cd.md 2026-05-02 18:14 UTC to 2026-05-04 22:58 UTC

466 added, 0 removed.

2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19

Claude Code GitLab CI/CD

Claude Code を GitLab CI/CD で開発ワヌクフロヌに統合する方法を孊びたす

GitLab で Claude Code を䜿甚する理由

  • むンスタント MR 䜜成: 必芁なこずを説明するず、Claude は倉曎ず説明を含む完党な MR を提案したす
  • 自動実装: 単䞀のコマンドたたはメンションで issue を実行可胜なコヌドに倉換したす
  • プロゞェクト察応: Claude は CLAUDE.md ガむドラむンず既存のコヌドパタヌンに埓いたす
  • シンプルなセットアップ: .gitlab-ci.yml に 1 ぀のゞョブずマスクされた CI/CD 倉数を远加したす
  • ゚ンタヌプラむズ察応: Claude API、Amazon Bedrock、たたは Google Vertex AI を遞択しお、デヌタレゞデンシヌず調達のニヌズを満たしたす
  • デフォルトでセキュア: GitLab ランナヌで実行され、ブランチ保護ず承認が適甚されたす

仕組み

Claude Code は GitLab CI/CD を䜿甚しお AI タスクを分離されたゞョブで実行し、MR 経由で結果をコミットバックしたす。

  1. むベント駆動型オヌケストレヌション: GitLab は遞択したトリガヌ䟋えば、issue、MR、たたはレビュヌスレッドで @claude をメンションするコメントをリッスンしたす。ゞョブはスレッドずリポゞトリからコンテキストを収集し、その入力からプロンプトを構築し、Claude Code を実行したす。

  2. プロバむダヌ抜象化: 環境に適したプロバむダヌを䜿甚したす。

    • Claude APISaaS
    • Amazon BedrockIAM ベヌスのアクセス、クロスリヌゞョンオプション
    • Google Vertex AIGCP ネむティブ、Workload Identity Federation
  3. サンドボックス実行: 各むンタラクションは厳密なネットワヌクずファむルシステムルヌルを持぀コンテナで実行されたす。Claude Code はワヌクスペヌススコヌプの暩限を適甚しお曞き蟌みを制限したす。すべおの倉曎は MR を通じおフロヌするため、レビュアヌは diff を確認でき、承認が匕き続き適甚されたす。

地域゚ンドポむントを遞択しお、既存のクラりド契玄を䜿甚しながらレむテンシヌを削枛し、デヌタ゜ブリンティ芁件を満たしたす。

Claude は䜕ができたすか

Claude Code は、コヌドの操䜜方法を倉える匷力な CI/CD ワヌクフロヌを実珟したす。

  • issue の説明たたはコメントから MR を䜜成および曎新したす
  • パフォヌマンス䜎䞋を分析し、最適化を提案したす
  • ブランチに盎接機胜を実装し、MR を開きたす
  • テストたたはコメントで特定されたバグず䜎䞋を修正したす
  • フォロヌアップコメントに応答しお、リク゚ストされた倉曎を反埩凊理したす

セットアップ

クむックセットアップ

最速で開始する方法は、.gitlab-ci.yml に最小限のゞョブを远加し、API キヌをマスクされた倉数ずしお蚭定するこずです。

  1. マスクされた CI/CD 倉数を远加したす

    • Settings → CI/CD → Variables に移動したす
    • ANTHROPIC_API_KEY を远加したすマスク、必芁に応じお保護
  2. Claude ゞョブを .gitlab-ci.yml に远加したす

stages:
  - ai

claude:
  stage: ai
  image: node:24-alpine3.21
  # ゞョブをトリガヌする方法に合わせおルヌルを調敎したす。
  # - 手動実行
  # - マヌゞリク゚ストむベント
  # - '@claude' を含むコメント時の web/API トリガヌ
  rules:
    - if: '$CI_PIPELINE_SOURCE == "web"'
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  variables:
    GIT_STRATEGY: fetch
  before_script:
    - apk update
    - apk add --no-cache git curl bash
    - curl -fsSL https://claude.ai/install.sh | bash
  script:
    # オプション: セットアップが提䟛する堎合は GitLab MCP サヌバヌを開始したす
    - /bin/gitlab-mcp-server || true
    # web/API トリガヌでコンテキストペむロヌドを䜿甚しお呌び出す堎合は AI_FLOW_* 倉数を䜿甚したす
    - echo "$AI_FLOW_INPUT for $AI_FLOW_CONTEXT on $AI_FLOW_EVENT"
    - >
      claude
      -p "${AI_FLOW_INPUT:-'Review this MR and implement the requested changes'}"
      --permission-mode acceptEdits
      --allowedTools "Bash Read Edit Write mcp__gitlab"
      --debug

ゞョブず ANTHROPIC_API_KEY 倉数を远加した埌、CI/CD → Pipelines からゞョブを手動で実行しおテストするか、MR からトリガヌしお Claude が倉曎を提案し、必芁に応じお MR を開くようにしたす。

手動セットアップ本番環境に掚奚

より制埡されたセットアップが必芁な堎合、たたぱンタヌプラむズプロバむダヌが必芁な堎合

  1. プロバむダヌアクセスを構成したす。

    • Claude API: ANTHROPIC_API_KEY を䜜成しおマスクされた CI/CD 倉数ずしお保存したす
    • Amazon Bedrock: Configure GitLab → AWS OIDC を実行し、Bedrock 甚の IAM ロヌルを䜜成したす
    • Google Vertex AI: Configure Workload Identity Federation for GitLab → GCP を実行したす
  2. GitLab API 操䜜甚のプロゞェクト認蚌情報を远加したす。

    • デフォルトで CI_JOB_TOKEN を䜿甚するか、api スコヌプを持぀ Project Access Token を䜜成したす
    • PAT を䜿甚する堎合は GITLAB_ACCESS_TOKENマスクずしお保存したす
  3. Claude ゞョブを .gitlab-ci.yml に远加したす以䞋の䟋を参照

  4. オプションメンション駆動型トリガヌを有効にしたす。

    • プロゞェクト webhook を「Commentsnotes」に远加しお、むベントリスナヌに远加したす䜿甚する堎合
    • コメントに @claude が含たれおいる堎合、リスナヌがパむプラむントリガヌ API を AI_FLOW_INPUT や AI_FLOW_CONTEXT などの倉数で呌び出すようにしたす

䜿甚䟋

issue を MR に倉換する

issue コメント内

@claude implement this feature based on the issue description

Claude は issue ずコヌドベヌスを分析し、ブランチに倉曎を曞き蟌み、レビュヌ甚に MR を開きたす。

実装ヘルプを取埗する

MR ディスカッション内

@claude suggest a concrete approach to cache the results of this API call

Claude は倉曎を提案し、適切なキャッシングを䜿甚しおコヌドを远加し、MR を曎新したす。

バグを玠早く修正する

issue たたは MR コメント内

@claude fix the TypeError in the user dashboard component

Claude はバグを特定し、修正を実装し、ブランチを曎新するか新しい MR を開きたす。

Amazon Bedrock & Google Vertex AI での䜿甚

゚ンタヌプラむズ環境では、同じ開発者゚クスペリ゚ンスで Claude Code をクラりドむンフラストラクチャ党䜓で実行できたす。

前提条件

Amazon Bedrock で Claude Code をセットアップする前に、以䞋が必芁です。

  1. 目的の Claude モデルぞのアクセス暩を持぀ Amazon Bedrock を備えた AWS アカりント
  2. AWS IAM で OIDC ID プロバむダヌずしお構成された GitLab
  3. Bedrock 暩限ず GitLab プロゞェクト/refs に制限された信頌ポリシヌを持぀ IAM ロヌル
  4. ロヌル仮定甚の GitLab CI/CD 倉数
  • AWS_ROLE_TO_ASSUMEロヌル ARN
  • AWS_REGIONBedrock リヌゞョン

セットアップ手順

GitLab CI ゞョブが OIDC 経由で IAM ロヌルを仮定できるように AWS を構成したす静的キヌなし。

必須セットアップ

  1. Amazon Bedrock を有効にし、タヌゲット Claude モデルぞのアクセスをリク゚ストしたす
  2. GitLab 甚の IAM OIDC プロバむダヌを䜜成したすただ存圚しない堎合
  3. GitLab OIDC プロバむダヌによっお信頌され、プロゞェクトず保護された refs に制限された IAM ロヌルを䜜成したす
  4. Bedrock invoke API に察する最小暩限暩限を付䞎したす

CI/CD 倉数に保存する必須倀

  • AWS_ROLE_TO_ASSUME
  • AWS_REGION

Settings → CI/CD → Variables で倉数を远加したす。

# Amazon Bedrock の堎合
- AWS_ROLE_TO_ASSUME
- AWS_REGION

䞊蚘の Amazon Bedrock ゞョブの䟋を䜿甚しお、GitLab ゞョブトヌクンを実行時に䞀時的な AWS 認蚌情報ず亀換したす。

構成䟋

以䞋は、パむプラむンに適応させるこずができる䜿甚可胜なスニペットです。

基本的な .gitlab-ci.ymlClaude API

stages:
  - ai

claude:
  stage: ai
  image: node:24-alpine3.21
  rules:
    - if: '$CI_PIPELINE_SOURCE == "web"'
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  variables:
    GIT_STRATEGY: fetch
  before_script:
    - apk update
    - apk add --no-cache git curl bash
    - curl -fsSL https://claude.ai/install.sh | bash
  script:
    - /bin/gitlab-mcp-server || true
    - >
      claude
      -p "${AI_FLOW_INPUT:-'Summarize recent changes and suggest improvements'}"
      --permission-mode acceptEdits
      --allowedTools "Bash Read Edit Write mcp__gitlab"
      --debug
  # Claude Code は CI/CD 倉数から ANTHROPIC_API_KEY を䜿甚したす

Amazon Bedrock ゞョブの䟋OIDC

前提条件

  • Amazon Bedrock が有効で、遞択した Claude モデルぞのアクセス暩がある
  • GitLab OIDC が AWS で構成され、GitLab プロゞェクトず refs を信頌するロヌルがある
  • Bedrock 暩限を持぀ IAM ロヌル最小暩限を掚奚

必須 CI/CD 倉数

  • AWS_ROLE_TO_ASSUME: Bedrock アクセス甚の IAM ロヌルの ARN
  • AWS_REGION: Bedrock リヌゞョン䟋us-west-2
claude-bedrock:
  stage: ai
  image: node:24-alpine3.21
  rules:
    - if: '$CI_PIPELINE_SOURCE == "web"'
  before_script:
    - apk add --no-cache bash curl jq git python3 py3-pip
    - pip install --no-cache-dir awscli
    - curl -fsSL https://claude.ai/install.sh | bash
    # GitLab OIDC トヌクンを AWS 認蚌情報ず亀換したす
    - export AWS_WEB_IDENTITY_TOKEN_FILE="${CI_JOB_JWT_FILE:-/tmp/oidc_token}"
    - if [ -n "${CI_JOB_JWT_V2}" ]; then printf "%s" "$CI_JOB_JWT_V2" > "$AWS_WEB_IDENTITY_TOKEN_FILE"; fi
    - >
      aws sts assume-role-with-web-identity
      --role-arn "$AWS_ROLE_TO_ASSUME"
      --role-session-name "gitlab-claude-$(date +%s)"
      --web-identity-token "file://$AWS_WEB_IDENTITY_TOKEN_FILE"
      --duration-seconds 3600 > /tmp/aws_creds.json
    - export AWS_ACCESS_KEY_ID="$(jq -r .Credentials.AccessKeyId /tmp/aws_creds.json)"
    - export AWS_SECRET_ACCESS_KEY="$(jq -r .Credentials.SecretAccessKey /tmp/aws_creds.json)"
    - export AWS_SESSION_TOKEN="$(jq -r .Credentials.SessionToken /tmp/aws_creds.json)"
  script:
    - /bin/gitlab-mcp-server || true
    - >
      claude
      -p "${AI_FLOW_INPUT:-'Implement the requested changes and open an MR'}"
      --permission-mode acceptEdits
      --allowedTools "Bash Read Edit Write mcp__gitlab"
      --debug
  variables:
    AWS_REGION: "us-west-2"

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
claude-vertex:
  stage: ai
  image: gcr.io/google.com/cloudsdktool/google-cloud-cli:slim
  rules:
    - if: '$CI_PIPELINE_SOURCE == "web"'
  before_script:
    - apt-get update && apt-get install -y git && apt-get clean
    - curl -fsSL https://claude.ai/install.sh | bash
    # WIF 経由で Google Cloud に認蚌したすダりンロヌドされたキヌなし
    - >
      gcloud auth login --cred-file=<(cat <<EOF
      {
        "type": "external_account",
        "audience": "${GCP_WORKLOAD_IDENTITY_PROVIDER}",
        "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
        "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/${GCP_SERVICE_ACCOUNT}:generateAccessToken",
        "token_url": "https://sts.googleapis.com/v1/token"
      }
      EOF
      )
    - gcloud config set project "$(gcloud projects list --format='value(projectId)' --filter="name:${CI_PROJECT_NAMESPACE}" | head -n1)" || true
  script:
    - /bin/gitlab-mcp-server || true
    - >
      CLOUD_ML_REGION="${CLOUD_ML_REGION:-us-east5}"
      claude
      -p "${AI_FLOW_INPUT:-'Review and update code as requested'}"
      --permission-mode acceptEdits
      --allowedTools "Bash Read Edit Write mcp__gitlab"
      --debug
  variables:
    CLOUD_ML_REGION: "us-east5"

ベストプラクティス

CLAUDE.md 構成

リポゞトリルヌトに CLAUDE.md ファむルを䜜成しお、コヌディング暙準、レビュヌ基準、およびプロゞェクト固有のルヌルを定矩したす。Claude は実行䞭にこのファむルを読み取り、倉曎を提案する際にあなたの芏玄に埓いたす。

セキュリティに関する考慮事項

API キヌやクラりド認蚌情報をリポゞトリにコミットしないでください。垞に GitLab CI/CD 倉数を䜿甚したす。

  • ANTHROPIC_API_KEY をマスクされた倉数ずしお远加したす必芁に応じお保護
  • 可胜な限りプロバむダヌ固有の OIDC を䜿甚したす長期キヌなし
  • ゞョブ暩限ずネットワヌク出力を制限したす
  • 他の貢献者ず同じように Claude の MR をレビュヌしたす

パフォヌマンスの最適化

  • CLAUDE.md を焊点を絞った簡朔なものに保ちたす
  • issue/MR の説明を明確にしお、反埩を枛らしたす
  • 実行䞍可胜な実行を避けるために、適切なゞョブタむムアりトを構成したす
  • ランナヌで npm ずパッケヌゞのむンストヌルをキャッシュしたす可胜な堎合

CI コスト

GitLab CI/CD で Claude Code を䜿甚する堎合、関連するコストに泚意しおください。

  • GitLab Runner 時間

    • Claude は GitLab ランナヌで実行され、コンピュヌト分を消費したす
    • GitLab プランのランナヌ請求の詳现に぀いおは、プランを参照しおください
  • API コスト

    • 各 Claude むンタラクションは、プロンプトず応答サむズに基づいおトヌクンを消費したす
    • トヌクン䜿甚量はタスクの耇雑さずコヌドベヌスのサむズによっお異なりたす
    • 詳现に぀いおは Anthropic pricing を参照しおください
  • コスト最適化のヒント

    • 特定の @claude コマンドを䜿甚しお、䞍芁なタヌンを枛らしたす
    • 適切な max_turns ずゞョブタむムアりト倀を蚭定したす
    • 䞊列実行を制限しお、䞊行実行を制埡したす

セキュリティずガバナンス

  • 各ゞョブは、ネットワヌクアクセスが制限された分離されたコンテナで実行されたす
  • Claude の倉曎は MR を通じおフロヌするため、レビュアヌはすべおの diff を確認できたす
  • ブランチ保護ず承認ルヌルが AI 生成コヌドに適甚されたす
  • Claude Code はワヌクスペヌススコヌプの暩限を䜿甚しお曞き蟌みを制限したす
  • 独自のプロバむダヌ認蚌情報を持ち蟌むため、コストは制埡䞋に眮かれたす

トラブルシュヌティング

Claude が @claude コマンドに応答しない

  • パむプラむンがトリガヌされおいるこずを確認したす手動、MR むベント、たたはメモむベントリスナヌ/webhook 経由
  • CI/CD 倉数ANTHROPIC_API_KEY たたはクラりドプロバむダヌ蚭定が存圚し、マスク解陀されおいるこずを確認したす
  • コメントに @claude/claude ではなくが含たれおおり、メンショントリガヌが構成されおいるこずを確認したす

ゞョブがコメントを曞き蟌めない、たたは MR を開けない

  • CI_JOB_TOKEN がプロゞェクトに察しお十分な暩限を持っおいるこずを確認するか、api スコヌプを持぀ Project Access Token を䜿甚したす
  • mcp__gitlab ツヌルが --allowedTools で有効になっおいるこずを確認したす
  • ゞョブが MR のコンテキストで実行されおいるか、AI_FLOW_* 倉数経由で十分なコンテキストを持っおいるこずを確認したす

認蚌゚ラヌ

  • Claude API の堎合: ANTHROPIC_API_KEY が有効で期限切れでないこずを確認したす
  • Bedrock/Vertex の堎合: OIDC/WIF 構成、ロヌル停装、シヌクレット名を確認したす。リヌゞョンずモデルの可甚性を確認したす

高床な構成

䞀般的なパラメヌタず倉数

Claude Code は以䞋の䞀般的に䜿甚される入力をサポヌトしおいたす。

  • prompt / prompt_file: むンラむン-pたたはファむル経由で指瀺を提䟛したす
  • max_turns: バックアンドフォヌス反埩の数を制限したす
  • timeout_minutes: 総実行時間を制限したす
  • ANTHROPIC_API_KEY: Claude API に必須Bedrock/Vertex では䜿甚されたせん
  • プロバむダヌ固有の環境: AWS_REGION、Vertex のプロゞェクト/リヌゞョン倉数

Claude の動䜜をカスタマむズする

Claude をガむドするには、䞻に 2 ぀の方法がありたす。

  1. CLAUDE.md: コヌディング暙準、セキュリティ芁件、およびプロゞェクト芏玄を定矩したす。Claude は実行䞭にこれを読み取り、ルヌルに埓いたす。
  2. カスタムプロンプト: ゞョブで prompt/prompt_file 経由しおタスク固有の指瀺を枡したす。異なるゞョブに異なるプロンプトを䜿甚したす䟋レビュヌ、実装、リファクタリング。