自学教程

Claude Code GitHub Actions

简介

Claude Code GitHub Actions 是官方提供的 Action,可在 GitHub 流水线中运行 Claude Code。支持 PR 自动代码评审、Issue 自动生成代码、PR评论中输入 @claude 触发任务,自动输出报告、提交代码修改。

两种使用模式:

  1. 自动触发模式:PR打开/更新时自动执行代码安全、规范评审
  2. 评论交互模式:在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 设置

  1. GitHub仓库 → Settings → Secrets and variables → Actions
  2. 新建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_keyAnthropic API密钥,推荐用secret
claude_code_oauth_token可选,使用OAuth登录替代API Key
prompt固定全局提示词,自动任务使用
model指定模型名称
claude_argsCLI启动参数,例如--no-memory --no-mcp
github_tokenGitHub token,默认自动注入

安全配置(重要)

  1. claude_args: '--no-memory':CI流水线禁用记忆系统,防止数据残留
  2. 生产环境建议限制写入权限,可关闭自动提交,仅做代码评审(只读模式)
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

最佳实践

  1. 区分两种流水线
    • 安全审计流水线:Plan模式,只读,只输出评审报告,不修改代码。
    • 辅助开发流水线:允许写代码,仅用于内部测试仓库,生产仓库慎用。
  2. CI中关闭Memory,不需要持久会话记忆。
  3. 限制并发,防止大量PR同时触发,消耗API额度。
  4. 项目.claude配置(技能、钩子、rules)一起提交到仓库,Action自动加载。
  5. 每次执行后,查看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 }}

常见问题

  1. Action 提示API认证失败
    检查仓库Secret名称,确认密钥没有多余空格;确认密钥权限开通。
  2. Claude无法提交代码回PR
    检查yaml里permissions.contents: write权限配置。
  3. MCP服务在CI容器启动失败
    CI是无桌面Linux环境,浏览器、本地文件增强类MCP无法运行,增加--no-mcp。
  4. 流水线执行时间过长
    限制max-turns,在claude_args增加参数控制最大轮次。

安全提示

  1. 生产仓库不建议开启自动提交代码,优先Plan模式做代码审计。
  2. 所有密钥通过GitHub Secrets注入,禁止写入代码或yaml。
  3. 不要在CI流水线启用Auto自动模式,存在代码篡改风险。
标签:

0 条笔记