Skip to content

Claude Code GitLab CI/CD

将 Claude Code 集成进 GitLab 流水线,在隔离 Job 中自动改代码并开 MR(Beta)。

是什么

Claude Code for GitLab CI/CD 让你把 Claude 集成进 GitLab 流水线:在隔离的 CI/CD Job 中运行 AI 任务,并通过 Merge Request 把结果提交回仓库。它构建在 Claude Code CLI 与 Agent SDK 之上。目前处于 Beta 阶段,由 GitLab 维护。

典型能力包括:根据 issue 描述或评论创建/更新 MR、把 issue 转成可用代码、分析性能回退并提出优化、修复测试或评论指出的 bug、响应后续评论迭代改动。Claude 会遵循仓库根目录的 CLAUDE.md 规范与既有代码风格,运行在你自己的 GitLab Runner 上,受分支保护与审批规则约束。

怎么工作

  • 事件驱动编排:GitLab 监听你选定的触发器(如 issue/MR/评论线程中提及 @claude),Job 从线程和仓库收集上下文、构建 prompt,再运行 Claude Code。
  • Provider 抽象:可选 Claude API(SaaS)、Amazon Bedrock(基于 IAM、支持跨区域)、Google Vertex AI(GCP 原生、Workload Identity Federation)。
  • 沙箱执行:每次交互在容器中运行,受严格的网络与文件系统规则约束;Claude Code 强制 workspace 范围的写权限,所有改动都经 MR 流转,审阅者可见 diff 且审批仍生效。
  • 可选择区域端点以降低延迟、满足数据主权要求,并复用既有云协议。

怎么配置 / 用法

快速开始:在 Settings → CI/CD → Variables 添加 masked 变量 ANTHROPIC_API_KEY,再在 .gitlab-ci.yml 添加一个 Job。

基础示例(Claude API):

yaml
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

变量说明:通过 web/API 触发并携带上下文 payload 时使用 AI_FLOW_INPUT / AI_FLOW_CONTEXT / AI_FLOW_EVENT。GitLab API 操作默认用 CI_JOB_TOKEN,或创建带 api scope 的 Project Access Token 并以 masked 变量 GITLAB_ACCESS_TOKEN 存储。Bedrock 需 AWS_ROLE_TO_ASSUME、AWS_REGION(如 us-west-2);Vertex AI 需 GCP_WORKLOAD_IDENTITY_PROVIDER、GCP_SERVICE_ACCOUNT、CLOUD_ML_REGION(如 us-east5)。

什么时候用

  • 把 issue 描述或评论转成完整 MR(在 issue 评论中 @claude implement this feature based on the issue description)。
  • 在 MR 讨论中获取实现建议。
  • 快速修 bug(@claude fix the TypeError in the user dashboard component)。
  • 在分支中直接实现功能后开 MR;分析性能回退并提优化;响应后续评论迭代改动。
  • 企业环境需在自有云基础设施上运行 Claude(Bedrock / Vertex AI)以满足数据驻留与采购需求。

限制 / 坑

  • 目前处于 Beta 阶段,功能可能变化;该集成由 GitLab 维护。
  • 具体 flag 与参数随 @anthropic-ai/claude-code 版本不同而异,应在 Job 内运行 claude --help 查看支持选项。
  • 会产生成本:Claude 在你自己的 GitLab Runner 上运行消耗计算分钟,且每次交互按 prompt/响应大小消耗 token。
  • 触发要求评论须含 @claude(而非 /claude)且已配置提及触发器;写评论/开 MR 需 CI_JOB_TOKEN 权限充足或使用带 api scope 的 PAT,并在 --allowedTools 中启用 mcp__gitlab。

硬事实速查(12 条)

  • 集成构建在 Claude Code CLI 与 Agent SDK 之上,当前为 Beta,由 GitLab 维护。
  • 默认镜像示例为 node:24-alpine3.21;通过 curl -fsSL https://claude.ai/install.sh | bash 安装。
  • Claude API 认证使用 masked CI/CD 变量 ANTHROPIC_API_KEY(Bedrock/Vertex 不使用该变量)。
  • 支持三种 Provider:Claude API、Amazon Bedrock(GitLab→AWS OIDC + IAM role)、Google Vertex AI(GitLab→GCP Workload Identity Federation)。
  • Bedrock 通过 aws sts assume-role-with-web-identity 用 GitLab OIDC token(CI_JOB_JWT_V2)换取临时 AWS 凭证;所需变量 AWS_ROLE_TO_ASSUME、AWS_REGION。
  • Vertex AI 通过 gcloud external_account 凭证免下载密钥认证;所需变量 GCP_WORKLOAD_IDENTITY_PROVIDER、GCP_SERVICE_ACCOUNT、CLOUD_ML_REGION(如 us-east5)。
  • 示例 Job 常用参数:--permission-mode acceptEdits、--allowedTools "Bash Read Edit Write mcp__gitlab"、--debug、-p 传 prompt。
  • 触发器示例:$CI_PIPELINE_SOURCE == "web" 与 "merge_request_event";提及触发可加 Comments(notes) webhook 调用 pipeline trigger API。
  • 上下文变量 AI_FLOW_INPUT、AI_FLOW_CONTEXT、AI_FLOW_EVENT 用于经 web/API 触发携带评论上下文。
  • Bedrock 模型 ID 含区域前缀,例如 us.anthropic.claude-sonnet-4-6。
  • 支持常用输入:prompt / prompt_file、max_turns、timeout_minutes。
  • 所有改动经 MR 流转,分支保护与审批规则对 AI 生成代码同样生效;Claude Code 强制 workspace 范围写权限。

官方出处:https://code.claude.com/docs/en/gitlab-ci-cd