Skip to content

Claude Code GitHub Actions

Claude Code GitHub Actions 让你在任何 PR 或 Issue 中用 @claude 提及触发 AI 自动化——代码审查、功能实现、Bug 修复,全部遵循你的 CLAUDE.md 项目规范。v1.0 GA 版简化了配置(统一的 prompt 输入、claude_args CLI 透传),自动检测交互模式,支持直接 API 或 AWS Bedrock/Google Vertex AI 企业部署。通过 /install-github-app 命令可快速完成安装。

Claude Code GitHub Actions 将 AI 自动化引入 GitHub 工作流。在任意 PR 或 Issue 中 @claude,Claude 分析代码、创建 PR、实现功能、修复 Bug——遵循你的项目规范。

自动在每个 PR 上发布评审(无需触发词)的功能,见 GitHub Code Review

核心能力:

  • 即时 PR 创建:描述需求,Claude 创建包含所有变更的完整 PR
  • 自动代码实现:Issue 转工作代码,一条命令搞定
  • 遵循项目规范:读取 CLAUDE.md 和现有代码模式
  • 简单安装/install-github-app 命令几分钟完成
  • 默认安全:代码在 GitHub runners 上运行

安装

快速安装(推荐)

在 Claude Code 终端运行:

/install-github-app

此命令引导完成 GitHub App 安装和所需 Secrets 配置。

手动安装

如果 /install-github-app 失败或需要手动控制:

  1. 在仓库安装 Claude GitHub App

    所需仓库权限:

    • Contents:Read & write(修改仓库文件)
    • Issues:Read & write(响应 Issues)
    • Pull requests:Read & write(创建 PR 和推送变更)
  2. ANTHROPIC_API_KEY 添加到仓库 Secrets

  3. examples/claude.yml 复制到仓库的 .github/workflows/


从 Beta 升级到 v1.0

如果你在使用 Beta 版,建议迁移到 GA 版(@v1)。

必须更改的内容

  1. 更新 Action 版本:将 @beta 改为 @v1
  2. 删除 mode 配置:删除 mode: "tag"mode: "agent"(现在自动检测)
  3. 更新 prompt 输入:将 direct_prompt 改为 prompt
  4. 迁移 CLI 选项:将 max_turnsmodelcustom_instructions 等移入 claude_args

变更对照表

Beta 输入v1.0 输入
mode已删除(自动检测)
direct_promptprompt
override_promptprompt(配合 GitHub 变量)
custom_instructionsclaude_args: --append-system-prompt
max_turnsclaude_args: --max-turns
modelclaude_args: --model
allowed_toolsclaude_args: --allowedTools
disallowed_toolsclaude_args: --disallowedTools
claude_envsettings JSON 格式

前后对比

Beta 版:

yaml
- uses: anthropics/claude-code-action@beta
  with:
    mode: "tag"
    direct_prompt: "Review this PR for security issues"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
    custom_instructions: "Follow our coding standards"
    max_turns: "10"
    model: "claude-sonnet-4-6"

GA v1.0:

yaml
- uses: anthropics/claude-code-action@v1
  with:
    prompt: "Review this PR for security issues"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
    claude_args: |
      --append-system-prompt "Follow our coding standards"
      --max-turns 10
      --model claude-sonnet-4-6

使用示例

基础工作流

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 提及

代码审查工作流

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: "Review this pull request for code quality, correctness, and security. Analyze the diff, then post your findings as review comments."
          claude_args: "--max-turns 5"

定时报告

yaml
name: Daily Report
on:
  schedule:
    - cron: "0 9 * * *"
jobs:
  report:
    runs-on: ubuntu-latest
    steps:
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: "Generate a summary of yesterday's commits and open issues"
          claude_args: "--model opus"

Issue/PR 评论中的常见命令

@claude implement this feature based on the issue description
@claude how should I implement user authentication for this endpoint?
@claude fix the TypeError in the user dashboard component

使用 AWS Bedrock 或 Google Vertex AI

企业环境中可以通过自己的云基础设施运行 Claude Code,掌控数据驻留和费用。

AWS Bedrock 工作流

前置条件:

  • Amazon Bedrock 开启了所需 Claude 模型的访问权限
  • GitHub 在 AWS 中配置为 OIDC 身份提供商
  • IAM 角色具有 Bedrock 权限,可信任 GitHub Actions

所需 Secrets:

Secret说明
AWS_ROLE_TO_ASSUMEBedrock 访问的 IAM 角色 ARN
APP_IDGitHub App ID
APP_PRIVATE_KEYGitHub App 私钥
yaml
name: Claude PR Action

permissions:
  contents: write
  pull-requests: write
  issues: write
  id-token: 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
    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 工作流

前置条件:

  • GCP 项目启用 Vertex AI API
  • 为 GitHub 配置 Workload Identity Federation
  • 服务账号具有 Vertex AI 权限

所需 Secrets:

Secret说明
GCP_WORKLOAD_IDENTITY_PROVIDERWorkload identity provider 资源名称
GCP_SERVICE_ACCOUNT具有 Vertex AI 访问权限的服务账号邮箱
APP_IDGitHub App ID
APP_PRIVATE_KEYGitHub App 私钥
yaml
# ... (同上 permissions 和 on 配置)
    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 }}
          trigger_phrase: "@claude"
          use_vertex: "true"
          claude_args: '--model claude-sonnet-4-5@20250929 --max-turns 10'
        env:
          ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}
          CLOUD_ML_REGION: us-east5
          VERTEX_REGION_CLAUDE_4_5_SONNET: us-east5

最佳实践

CLAUDE.md 配置

在仓库根目录创建 CLAUDE.md,定义代码风格、审查标准和项目特定规则。Claude 会在创建 PR 和响应请求时遵循这些规则,详见Memory 文档

安全注意事项

API Key 必须通过 GitHub Secrets 传递,不能硬编码在工作流文件中:

yaml
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

费用控制

GitHub Actions 费用:

  • Claude Code 在 GitHub runners 上运行,消耗 Actions 分钟数

API 费用:

  • 每次 Claude 交互消耗 token,用量取决于任务复杂度和代码库大小

优化建议:

  • 使用具体的 @claude 命令,减少不必要的 API 调用
  • claude_args 中配置 --max-turns 防止过多迭代
  • 设置工作流级别的超时,避免任务失控
  • 使用 GitHub 并发控制限制并行运行数量

Action 参数参考

参数说明是否必填
promptClaude 的指令(纯文本或 Skill 名称)否*
claude_args传给 Claude Code 的 CLI 参数
anthropic_api_keyClaude API Key是**
github_tokenGitHub API 访问 token
trigger_phrase自定义触发词(默认 "@claude")
use_bedrock使用 AWS Bedrock 代替 Claude API
use_vertex使用 Google Vertex AI 代替 Claude API

*直接 API 模式下必填
**Bedrock/Vertex 模式下不需要

常用 claude_args

claude_args: "--max-turns 5 --model claude-sonnet-4-6 --mcp-config /path/to/config.json"
  • --max-turns:最大对话轮数(默认 10)
  • --model:使用的模型
  • --mcp-config:MCP 配置路径
  • --allowedTools:允许的工具(逗号分隔)
  • --debug:开启调试输出

故障排查

问题检查点
Claude 不响应 @claude确认 App 已安装、工作流已启用、Secret 已设置、评论包含 @claude 而非 /claude
CI 不在 Claude 的提交上运行使用 GitHub App 或自定义 App(不用 Actions user),检查工作流触发器
认证错误确认 API Key 有效;Bedrock/Vertex 检查凭据配置和 Secret 名称

相关文档

常见问题

Q: 使用 GitHub Actions 集成需要安装 Claude GitHub App 吗?

推荐安装,这是最简单的方式(通过 /install-github-app 自动完成)。也可以使用自定义 GitHub App 或直接配置工作流,详见高级配置

Q: 企业用户想用 Bedrock 或 Vertex,是否支持?

完全支持。通过 use_bedrock: "true"use_vertex: "true" 参数启用,配合 OIDC 认证无需长期密钥。

Q: 如何防止 Claude 的 AI 生成代码不经审查就合并?

Claude 的代码变更通过标准 PR 流程提交,所有分支保护规则和审查要求同样适用于 AI 生成的代码。合并前审查 Claude 的建议与审查普通 PR 一样。