Appearance
GitHub Actions 集成
Claude Code GitHub Actions 将 AI 自动化引入 GitHub 工作流。在 PR 或 Issue 中提及 @claude,Claude 就能分析代码、创建 PR、实现功能或修复 Bug。
能做什么
- 即时创建 PR:描述需求,Claude 生成完整 PR
- 自动代码实现:一条命令把 Issue 变成可运行代码
- 自动代码审查:PR 打开时自动触发审查
- 遵循项目规范:自动读取
CLAUDE.md中的代码风格指南 - 定时自动化:每天定时生成报告、检查代码质量
快速安装
方式一:通过 Claude Code CLI(推荐)
在终端启动 Claude Code,运行斜杠命令:
/install-github-app会引导你完成 GitHub App 安装和 Secrets 配置。
方式二:手动安装
第一步:安装 Claude GitHub App
所需 GitHub 权限:
- Contents:读写(提交代码)
- Issues:读写(评论 Issue)
- Pull requests:读写(创建/评论 PR)
第二步:在仓库 Settings → Secrets 中添加 ANTHROPIC_API_KEY
第三步:创建工作流文件 .github/workflows/claude.yml(见下方示例)
基础工作流
响应任意评论中的 @claude 提及:
yaml
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
claude:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}配置好后,你可以这样触发:
@claude 修复 README 中的拼写错误
@claude 为 src/auth.ts 写单元测试
@claude 审查这个 PR 的安全隐患
@claude 实现 Issue #123 描述的功能常用工作流示例
自动代码审查(PR 创建时触发)
yaml
name: Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
审查这个 Pull Request:
1. 检查代码质量和可读性
2. 找出潜在的 Bug 和安全问题
3. 验证逻辑是否正确
4. 以 review comment 形式给出具体反馈
claude_args: "--max-turns 5"定时代码质量报告
yaml
name: Daily Code Report
on:
schedule:
- cron: "0 9 * * 1-5" # 工作日早上 9 点
jobs:
report:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
分析昨天的提交:
1. 总结主要变更
2. 指出潜在的技术债务
3. 建议需要跟进的事项
claude_args: "--model sonnet --max-turns 3"Issue 自动实现功能
yaml
name: Implement Issue
on:
issues:
types: [assigned]
jobs:
implement:
if: contains(github.event.issue.body, '@claude')
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: "--max-turns 20"完整配置(含权限声明)
yaml
name: Claude PR Action
permissions:
contents: write
pull-requests: write
issues: write
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
jobs:
claude-pr:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run Claude
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}配置参数
| 参数 | 说明 | 是否必填 |
|---|---|---|
prompt | 给 Claude 的固定指令(PR 打开时自动执行) | 否 |
claude_args | 传给 Claude Code CLI 的参数 | 否 |
anthropic_api_key | Claude API Key | 直连 API 时必填 |
github_token | GitHub API Token(默认使用 GITHUB_TOKEN) | 否 |
trigger_phrase | 自定义触发词,默认 @claude | 否 |
use_bedrock | 使用 AWS Bedrock | 否 |
use_vertex | 使用 Google Vertex AI | 否 |
常用 claude_args
yaml
claude_args: >
--max-turns 10
--model claude-sonnet-4-6
--mcp-config /path/to/mcp.json
--allowedTools "Bash(git *)" "Read" "Edit"
--append-system-prompt "始终用中文回复"| 参数 | 说明 |
|---|---|
--max-turns | 最大对话轮数(默认 10) |
--model | 模型名称 |
--mcp-config | MCP 服务器配置文件路径 |
--allowedTools | 允许的工具列表 |
--disallowedTools | 禁止的工具列表 |
--append-system-prompt | 追加到系统提示的文本 |
--debug | 开启调试输出 |
--permission-mode plan | 只读计划模式 |
使用 AWS Bedrock
不想使用 Anthropic 直连 API,可以走 AWS Bedrock:
所需 Secrets:
AWS_ROLE_TO_ASSUME:IAM Role ARNAPP_ID:GitHub App IDAPP_PRIVATE_KEY:GitHub App 私钥
yaml
name: Claude with Bedrock
permissions:
contents: write
pull-requests: write
issues: write
id-token: write # OIDC 必须
on:
issue_comment:
types: [created]
jobs:
claude:
if: contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
env:
AWS_REGION: us-west-2
steps:
- uses: actions/checkout@v4
- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Configure AWS Credentials (OIDC)
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
aws-region: us-west-2
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ steps.app-token.outputs.token }}
use_bedrock: "true"
claude_args: '--model us.anthropic.claude-sonnet-4-6 --max-turns 10'使用 Google Vertex AI
所需 Secrets:
GCP_WORKLOAD_IDENTITY_PROVIDER:Workload Identity Provider 资源名GCP_SERVICE_ACCOUNT:服务账号邮箱APP_ID:GitHub App IDAPP_PRIVATE_KEY:GitHub App 私钥
yaml
name: Claude with Vertex AI
permissions:
contents: write
pull-requests: write
issues: write
id-token: write # OIDC 必须
on:
issue_comment:
types: [created]
jobs:
claude:
if: contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Authenticate to Google Cloud
id: auth
uses: google-github-actions/auth@v2
with:
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ steps.app-token.outputs.token }}
use_vertex: "true"
claude_args: '--model claude-sonnet-4@20250514 --max-turns 10'
env:
ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}
CLOUD_ML_REGION: us-east5从 Beta 升级到 v1.0
如果你还在用 Beta 版本,以下是主要变化:
| Beta 参数 | v1.0 等效写法 |
|---|---|
mode | 已移除,自动检测 |
direct_prompt | prompt |
custom_instructions | claude_args: --append-system-prompt "..." |
max_turns | claude_args: --max-turns N |
model | claude_args: --model <name> |
allowed_tools | claude_args: --allowedTools "..." |
disallowed_tools | claude_args: --disallowedTools "..." |
升级示例:
yaml
# Beta 写法
- uses: anthropics/claude-code-action@beta
with:
mode: "tag"
direct_prompt: "检查代码安全问题"
custom_instructions: "遵循我们的编码规范"
max_turns: "10"
model: "claude-sonnet-4-6"
# v1.0 写法
- uses: anthropics/claude-code-action@v1
with:
prompt: "检查代码安全问题"
claude_args: |
--append-system-prompt "遵循我们的编码规范"
--max-turns 10
--model claude-sonnet-4-6常见问题
Claude 不响应 @claude 命令
- 确认 GitHub App 已安装到对应仓库
- 确认 Workflow 文件已推送并在 Actions 中启用
- 检查 Secrets 中是否有
ANTHROPIC_API_KEY - 评论内容是否包含
@claude(不是/claude)
Claude 提交代码后 CI 不触发
- GitHub Actions 用户创建的事件不会触发其他工作流(防止循环)
- 解决方案:创建 GitHub App,用 App Token 代替
GITHUB_TOKEN - App 创建的事件会正常触发其他工作流
认证失败
- 检查
ANTHROPIC_API_KEY是否有效且未过期 - Bedrock:确认 IAM Role 有足够权限,
AWS_REGION设置正确 - Vertex:确认服务账号有
Vertex AI User角色,项目 ID 正确
Workflow 超时
- 增加
--max-turns值(默认 10) - 复杂任务建议设置
timeout-minutes: 30在 job 级别
安全最佳实践
- 使用 GitHub App 而非 PAT:GitHub App 权限更精细,可以限制到特定仓库
- 限制 Claude 工具:用
--allowedTools只允许必要的工具 - 只读计划模式:敏感仓库可以用
--permission-mode plan只让 Claude 分析不让修改 - 限制触发条件:用
if条件精确控制哪些事件触发 Claude - 不要暴露 secrets:避免在
prompt中输出或记录敏感信息
相关资源
- Claude Code GitHub Action 仓库
- CLI 参考:所有 claude_args 可用参数
- MCP:扩展 Claude 可用工具