Claude Code 平台集成
Claude Code 平台集成
GitLab CI/CD 集成
5 分钟阅读
Claude Code GitLab CI/CD
了解如何通过 GitLab CI/CD 将 Claude Code 集成到您的开发工作流中
适用于 GitLab CI/CD 的 Claude Code 目前处于 Beta 阶段。功能和体验可能会随着我们不断完善而演变。
此集成由 GitLab 维护。有关支持,请参阅以下 GitLab issue。
此集成构建于 Claude Code CLI 和 Agent SDK 之上,支持在您的 CI/CD 作业和自定义自动化工作流中以编程方式使用 Claude。
为何在 GitLab 中使用 Claude Code?
- 即时创建 MR:描述您的需求,Claude 即可提议包含更改和说明的完整 MR
- 自动化实现:通过单一命令或提及将 issue 转化为可运行的代码
- 项目感知:Claude 遵循您的
CLAUDE.md指南和现有代码模式 - 简单设置:向
.gitlab-ci.yml添加一个作业并设置一个 masked CI/CD 变量 - 企业就绪:选择 Claude API、Amazon Bedrock 或 Google Cloud 的 Agent Platform 以满足数据驻留和采购需求
- 默认安全:在您的 GitLab 运行器中运行,遵循您的分支保护和审批规则
工作原理
Claude Code 使用 GitLab CI/CD 在隔离作业中运行 AI 任务,并通过 MR 提交结果:
-
事件驱动编排:GitLab 监听您选择的触发器(例如,在 issue、MR 或审查线程中提及
@claude的评论)。作业收集线程和仓库的上下文,从该输入构建 prompt,并运行 Claude Code。 -
提供商抽象:使用适合您环境的提供商:
- Claude API(SaaS)
- Amazon Bedrock(基于 IAM 的访问,跨区域选项)
- Google Cloud 的 Agent Platform(GCP 原生,Workload Identity Federation)
-
沙箱执行:每次交互在具有严格网络和文件系统规则的容器中运行。Claude Code 强制执行工作空间范围的权限以约束写入。每项更改都通过 MR 流转,以便审查者查看差异且审批规则仍然适用。
选择区域端点以减少延迟并满足数据主权要求,同时使用现有的云协议。
Claude 能做什么?
Claude Code 支持强大的 CI/CD 工作流,彻底改变您处理代码的方式:
- 从 issue 描述或评论创建和更新 MR
- 分析性能回归并提出优化建议
- 直接在分支中实现功能,然后打开 MR
- 修复测试或评论识别的错误和回归
- 响应后续评论以迭代请求的更改
设置
快速设置
入门最快的方式是向 .gitlab-ci.yml 添加一个最小作业,并将您的 API 密钥设置为 masked 变量。
-
添加 masked CI/CD 变量
- 前往 Settings → CI/CD → Variables
- 添加
ANTHROPIC_API_KEY(根据需要设置为 masked、protected)
-
向
.gitlab-ci.yml添加 Claude 作业
添加作业和 ANTHROPIC_API_KEY 变量后,通过从 CI/CD → Pipelines 手动运行作业来测试,或从 MR 触发它以让 Claude 在分支中提议更新并在需要时打开 MR。
要在 Amazon Bedrock 或 Google Cloud 的 Agent Platform 上运行而非 Claude API,请参阅下方的与 Amazon Bedrock 和 Google Cloud 配合使用部分,了解身份验证和环境设置。
手动设置(推荐用于生产环境)
如果您偏好更受控的设置或需要企业提供商:
-
配置提供商访问:
- Claude API:创建并存储
ANTHROPIC_API_KEY作为 masked CI/CD 变量 - Amazon Bedrock:配置 GitLab → AWS OIDC 并创建用于 Amazon Bedrock 的 IAM 角色
- Google Cloud 的 Agent Platform:配置适用于 GitLab 的 Workload Identity Federation → GCP
- Claude API:创建并存储
-
添加用于 GitLab API 操作的项目凭证:
- 默认使用
CI_JOB_TOKEN,或使用具有api范围的 Project Access Token - 如果使用 PAT,则存储为
GITLAB_ACCESS_TOKEN(masked)
- 默认使用
-
向
.gitlab-ci.yml添加 Claude 作业(请参阅下面的示例) -
(可选)启用提及驱动触发器:
- 为 "Comments (notes)" 添加项目 webhook 到您的事件监听器(如果使用)
- 让监听器在评论包含
@claude时调用流水线触发 API,并传递AI_FLOW_INPUT和AI_FLOW_CONTEXT等变量
使用示例
将 issue 转化为 MR
在 issue 评论中:
Claude 分析 issue 和代码库,在分支中编写更改,并打开 MR 以供审查。
获取实现帮助
在 MR 讨论中:
Claude 提议更改,添加适当的缓存代码,并更新 MR。
快速修复错误
在 issue 或 MR 评论中:
Claude 定位错误,实施修复,并更新分支或打开新的 MR。
与 Amazon Bedrock 和 Google Cloud 配合使用
对于企业环境,您可以在自有云基础设施上完全运行 Claude Code,保持相同的开发者体验。
- Amazon Bedrock
- Google Cloud 的 Agent Platform
前提条件
在设置 Claude Code 与 Amazon Bedrock 之前,您需要:
- 具有 Amazon Bedrock 访问权限的 AWS 账户,可访问所需的 Claude 模型
- 在 AWS IAM 中将 GitLab 配置为 OIDC 身份提供商
- 具有 Amazon Bedrock 权限且信任策略限制于您的 GitLab 项目/refs 的 IAM 角色
- 用于角色承担的 GitLab CI/CD 变量:
AWS_ROLE_TO_ASSUME(角色 ARN)AWS_REGION(Amazon Bedrock 区域)
设置说明
配置 AWS 以允许 GitLab CI 作业通过 OIDC 承担 IAM 角色(无需静态密钥)。
所需设置:
- 启用 Amazon Bedrock 并请求访问您的目标 Claude 模型
- 如果尚未存在,为 GitLab 创建 IAM OIDC 提供商
- 创建由 GitLab OIDC 提供商信任的 IAM 角色,限制于您的项目和受保护 refs
- 为 Amazon Bedrock 调用 API 附加最小权限
需要存储在 CI/CD 变量中的值:
AWS_ROLE_TO_ASSUMEAWS_REGION
在 Settings → CI/CD → Variables 中添加变量:
使用上面的 Amazon Bedrock 作业示例在运行时交换 GitLab 作业令牌以获取临时 AWS 凭证。
配置示例
以下是您可以适配到流水线的现成代码片段。
基础 .gitlab-ci.yml(Claude API)
Amazon Bedrock 作业示例(OIDC)
前提条件:
- 已启用 Amazon Bedrock 并可访问您选择的 Claude 模型
- 在 AWS 中配置了信任您的 GitLab 项目和 refs 的 GitLab OIDC
- 具有 Amazon Bedrock 权限的 IAM 角色(建议最小权限)
所需的 CI/CD 变量:
AWS_ROLE_TO_ASSUME:用于 Amazon Bedrock 访问的 IAM 角色 ARNAWS_REGION:Amazon Bedrock 区域(例如us-west-2)
Amazon Bedrock 的模型 ID 包含区域特定前缀(例如 us.anthropic.claude-sonnet-4-6)。通过您的作业配置或 prompt 传递所需的模型(如果支持)。
Agent Platform 作业示例(Workload Identity Federation)
前提条件:
- 在您的 GCP 项目中启用了 Google Cloud 的 Agent Platform API
- 配置了信任 GitLab OIDC 的 Workload Identity Federation
- 具有 Google Cloud 的 Agent Platform 权限的服务账号
所需的 CI/CD 变量:
GCP_WORKLOAD_IDENTITY_PROVIDER:完整提供商资源名称GCP_SERVICE_ACCOUNT:服务账号电子邮件CLOUD_ML_REGION:Google Cloud 的 Agent Platform 区域(例如us-east5)
使用 Workload Identity Federation,您无需存储服务账号密钥。使用仓库特定的信任条件和最小权限服务账号。
最佳实践
CLAUDE.md 配置
在仓库根目录创建 CLAUDE.md 文件,以定义编码标准、审查标准和项目特定规则。Claude 在运行期间读取此文件,并在提议更改时遵循您的约定。
安全注意事项
切勿将 API 密钥或云凭证提交到您的仓库。始终使用 GitLab CI/CD 变量:
- 将
ANTHROPIC_API_KEY添加为 masked 变量(并根据需要保护) - 尽可能使用提供商特定的 OIDC(无需长期密钥)
- 限制作业权限和网络出口
- 像审查任何其他贡献者一样审查 Claude 的 MR
优化性能
- 保持
CLAUDE.md聚焦且简洁 - 提供清晰的 issue/MR 描述以减少迭代
- 配置合理的作业超时以避免失控运行
- 尽可能在运行器中缓存 npm 和包安装
CI 成本
使用 Claude Code 与 GitLab CI/CD 时,请注意相关成本:
-
GitLab Runner 时间:
- Claude 在您的 GitLab 运行器上运行并消耗计算分钟数
- 有关详情,请参阅您的 GitLab 计划的 runner 计费
-
API 成本:
- 每次 Claude 交互根据 prompt 和响应大小消耗 token
- Token 使用量因任务复杂度和代码库大小而异
- 有关详情,请参阅 Anthropic 定价
-
成本优化建议:
- 使用特定的
@claude命令以减少不必要的轮次 - 设置适当的
max_turns和作业超时值 - 限制并发以控制并行运行
- 使用特定的
安全与治理
- 每个作业在具有受限网络访问的隔离容器中运行
- Claude 的更改通过 MR 流转,以便审查者查看每个差异
- 分支保护和审批规则适用于 AI 生成的代码
- Claude Code 使用工作空间范围的权限来约束写入
- 成本由您控制,因为您自带提供商凭证
故障排查
Claude 不响应 @claude 命令
- 验证您的流水线是否被触发(手动、MR 事件或通过备注事件监听器/webhook)
- 确保 CI/CD 变量(
ANTHROPIC_API_KEY或云提供商设置)存在且未 masked - 检查评论包含
@claude(而非/claude)且您的提及触发器已配置
作业无法写入评论或打开 MR
- 确保
CI_JOB_TOKEN对项目具有足够的权限,或使用具有api范围的 Project Access Token - 检查
--allowedTools中启用了mcp__gitlab工具 - 确认作业在 MR 上下文中运行或通过
AI_FLOW_*变量具有足够的上下文
身份验证错误
- 对于 Claude API:确认
ANTHROPIC_API_KEY有效且未过期 - 对于 Amazon Bedrock 或 Google Cloud 的 Agent Platform:验证 OIDC/WIF 配置、角色模拟和密钥名称;确认区域和模型可用性
高级配置
常用参数和变量
Claude Code 支持以下常用输入:
prompt/prompt_file:内联提供指令 (-p) 或通过文件max_turns:限制来回迭代次数timeout_minutes:限制总执行时间ANTHROPIC_API_KEY:Claude API 所需(Amazon Bedrock 或 Google Cloud 的 Agent Platform 不使用)- 提供商特定环境:
AWS_REGION、Google Cloud 的 Agent Platform 的项目/区域变量
确切的标志和参数可能因 @anthropic-ai/claude-code 的版本而异。在作业中运行 claude --help 以查看支持的选项。
自定义 Claude 的行为
您可以通过两种主要方式引导 Claude:
- CLAUDE.md:定义编码标准、安全要求和项目约定。Claude 在运行期间读取此文件并遵循您的规则。
- 自定义 prompts:通过作业中的
prompt/prompt_file传递任务特定指令。为不同的作业使用不同的 prompts(例如审查、实现、重构)。