简介
Claude Code GitHub Actions 是官方提供的 Action,可在 GitHub 流水线中运行 Claude Code。支持 PR 自动代码评审、Issue 自动生成代码、PR评论中输入 @claude 触发任务,自动输出报告、提交代码修改。
两种使用模式:
- 自动触发模式:PR打开/更新时自动执行代码安全、规范评审
- 评论交互模式:在PR、Issue评论输入
@claude xxx,按需调用Claude处理任务
前置:仓库开启GitHub Actions,准备 Anthropic API Key,存入仓库Secrets。
核心能力
- PR打开/更新自动代码评审,在代码行内添加评论
- Issue里
@claude,自动根据需求生成代码并创建PR - 读取CI测试结果,辅助定位失败原因
- 支持自定义提示词、指定模型、传入项目
.claude配置 - 可配置是否允许Claude提交代码回仓库
快速配置
在项目新建文件:.github/workflows/claude.yml
name: Claude Code Workflow on: pull_request: types: [opened, synchronize] issue_comment: types: [created] issues: types: [opened]jobs:
claude-run:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
actions: read
if: >
(github.event_name == 'pull_request') ||
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))
steps:
- name: Checkout 代码
uses: actions/checkout@v6
with:
fetch-depth: 1 <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">运行</span> <span class="hljs-string">Claude</span> <span class="hljs-string">Code</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">anthropics/claude-code-action@v1</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">anthropic_api_key:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.ANTHROPIC_API_KEY</span> <span class="hljs-string">}}</span> <span class="hljs-comment"># 可选,固定提示词,PR自动评审</span> <span class="hljs-attr">prompt:</span> <span class="hljs-string">> 调用技能 code-review,评审本次PR变更,检查安全漏洞、类型错误与代码规范,输出markdown报告,在PR添加行内评论。# 可选参数
model: claude-3-5-sonnet
claude_args: '--no-memory'
仓库 Secrets 设置
- GitHub仓库 → Settings → Secrets and variables → Actions
- 新建Secret:
ANTHROPIC_API_KEY,填入密钥
⚠️ 不要硬编码API Key到yaml文件。
触发方式示例
1. PR自动评审
打开/更新PR,流水线自动执行代码评审,结果直接评论在PR页面。
2. PR评论触发(交互)
在PR评论框输入:
@claude 优化src工具函数,修复类型警告
Action启动Claude Code,修改代码,提交新commit到当前PR。
3. Issue触发
新建Issue描述需求:
@claude 开发用户列表接口,新增类型定义
Claude自动生成代码,创建新PR。
常用参数说明
| 参数 | 说明 |
|---|---|
anthropic_api_key | Anthropic API密钥,推荐用secret |
claude_code_oauth_token | 可选,使用OAuth登录替代API Key |
prompt | 固定全局提示词,自动任务使用 |
model | 指定模型名称 |
claude_args | CLI启动参数,例如--no-memory --no-mcp |
github_token | GitHub token,默认自动注入 |
安全配置(重要)
claude_args: '--no-memory':CI流水线禁用记忆系统,防止数据残留- 生产环境建议限制写入权限,可关闭自动提交,仅做代码评审(只读模式)
claude_args: '--permission-mode plan --no-memory'
Plan模式:仅分析代码,禁止任何文件写入和代码提交,安全,适合PR审计。
MCP在GitHub Actions中使用
项目.claude/settings.json中配置MCP服务,Action会自动加载。
注意:CI容器环境,部分MCP(如Chrome浏览器)无法运行,建议CI中禁用。
# claude_args 禁用全部MCP
claude_args: '--no-mcp --no-memory'
工作流示例:PR安全审计(推荐)
prompt: >
对本次PR变更做安全审计:查找XSS、SQL注入、权限漏洞、敏感硬编码密钥。
发现问题,在对应代码行添加行内评论;输出风险等级与修复建议。
仅做评审,不自动修改代码,使用Plan模式。
权限控制
permissions配置最小权限原则:
- 只做代码评审:
contents: read,不需要write - 需要Claude自动提交代码:
contents: write
最佳实践
- 区分两种流水线
- 安全审计流水线:Plan模式,只读,只输出评审报告,不修改代码。
- 辅助开发流水线:允许写代码,仅用于内部测试仓库,生产仓库慎用。
- CI中关闭Memory,不需要持久会话记忆。
- 限制并发,防止大量PR同时触发,消耗API额度。
- 项目
.claude配置(技能、钩子、rules)一起提交到仓库,Action自动加载。 - 每次执行后,查看Action日志排查问题,日志级别可通过
CLAUDE_CODE_LOG_LEVEL环境变量调整。
环境变量注入示例
- name: 运行 Claude Code
uses: anthropics/claude-code-action@v1
env:
CLAUDE_CODE_LOG_LEVEL: warn
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
常见问题
- Action 提示API认证失败
检查仓库Secret名称,确认密钥没有多余空格;确认密钥权限开通。 - Claude无法提交代码回PR
检查yaml里permissions.contents: write权限配置。 - MCP服务在CI容器启动失败
CI是无桌面Linux环境,浏览器、本地文件增强类MCP无法运行,增加--no-mcp。 - 流水线执行时间过长
限制max-turns,在claude_args增加参数控制最大轮次。
安全提示
- 生产仓库不建议开启自动提交代码,优先Plan模式做代码审计。
- 所有密钥通过GitHub Secrets注入,禁止写入代码或yaml。
- 不要在CI流水线启用Auto自动模式,存在代码篡改风险。
0 条笔记