Claude Code GitLab CI/CD 让你在 GitLab issue、MR 和 pipeline 中调用 Claude。它目前是 beta,由 GitLab 维护,底层基于 Claude Code CLI 和 Agent SDK。
为什么在 GitLab 里用 Claude Code?
它能把评论里的需求转成 GitLab MR:
@claude implement this feature based on the issue descriptionClaude 会读取 issue/MR 上下文、仓库代码和 CLAUDE.md,在 GitLab runner 中执行任务,然后通过 MR 交付结果。
典型能力:
- 从 issue 描述创建 MR
- 根据 MR 评论继续修改代码
- 分析性能回归并提出优化
- 修复测试失败或异常
- 在企业 runner 中运行,保留现有 branch protection 和 approvals
工作原理
- GitLab 监听事件:评论、MR、手动 pipeline、API trigger
- Job 收集上下文:线程内容、仓库、分支、MR 信息
- Job 构造 Prompt 并运行 Claude Code CLI
- Claude 在容器中读写代码
- 结果通过分支/MR 回到 GitLab
关键点:它运行在你的 GitLab runner 中,所以比纯托管方案更容易满足企业网络、区域和权限要求。
最小配置思路
.gitlab-ci.yml 至少需要:
- 一个
aistage - Node 或包含 Claude Code 的镜像
- 安装 git/curl/bash 等基础工具
- 调用 Claude Code CLI
- 在 GitLab 设置中添加 masked CI/CD variable:
ANTHROPIC_API_KEY
Job 可以根据 CI_PIPELINE_SOURCE 区分手动触发、MR 触发或 API 触发。
mention-driven 触发
可以用 webhook 或事件监听器捕捉评论里的 @claude,再调用 pipeline trigger API,并传入:
AI_FLOW_INPUT:用户评论内容AI_FLOW_CONTEXT:issue/MR 上下文AI_FLOW_EVENT:触发事件类型
例如:
@claude fix the TypeError in the user dashboard componentJob 中的 Claude 会拿到这段输入并执行修复。
企业部署:Bedrock 与 Vertex AI
如果企业不能直接使用 Claude API,可以改用云厂商托管模型。
Amazon Bedrock 方案通常需要:
- Bedrock 模型访问权限
- GitLab OIDC identity provider
- IAM role,限定项目和 protected refs
- CI/CD variables:
AWS_ROLE_TO_ASSUME、AWS_REGION
Google Vertex AI 方案通常需要:
- Vertex AI API
- Workload Identity Federation
- 专用 service account
- CI/CD variables:
GCP_WORKLOAD_IDENTITY_PROVIDER、GCP_SERVICE_ACCOUNT、CLOUD_ML_REGION
两者的共同目标都是避免长期静态密钥,让 runner 用 OIDC/WIF 换取短期凭证。
安全最佳实践
- 使用 masked/protected variables
- 最小化 allowed tools
- 所有变更通过 MR,不直接 push main
- 对 runner 网络 egress 做限制
- 保护分支与审批规则继续生效
- 对 Bedrock/Vertex 使用 OIDC/WIF,而不是长期 key
- 在
CLAUDE.md写清测试命令、禁止目录和审查标准
来源:Claude Code 官方文档 - GitLab CI/CD | 整理:ClaudeEagle