首页 / Claude Code 入门教程 / GitHub Actions 与 CI

Claude Code 入门教程

GitHub Actions 与 CI

本教程共 34 篇 · 第 28 篇 · 更新于 2026-07-26 · 约 8 分钟阅读

Claude CodeClaude Code 入门教程GitHub ActionsCI/CD自动化DevOps

28. GitHub Actions 与 CI

本节目标:学会把 Claude Code 装进 GitHub Actions,让它在 PR 和 Issue 里随叫随到,甚至定时无人值守地帮你干活。

把 Claude 搬进 GitHub Actions

前面几章讲的 Claude Code 都是你坐在终端前、一条一条跟它对话。但很多时候你想让它自己动起来:有人提了 Issue,自动分析;有新 PR,自动审查;每天早上,自动汇总昨天的提交。

Claude Code GitHub Actions 就是干这个的。它是一个官方的 GitHub Action,跑在 GitHub 的运行器(runner)上。你只要在 PR 或 Issue 评论里 @ 一下它,它就能分析代码、创建 PR、实现功能、修 Bug,而且会遵守你 CLAUDE.md 里写的规范。

打个比方:之前 Claude 是你桌上的同事,你得喊它才干活;装进 GitHub Actions 后,它变成了一个 7x24 小时在线的值班工程师,仓库里有动静它就响应。

它能干什么

  • 即时创建 PR:描述你要啥,Claude 直接给你开一个改好代码的 PR
  • Issue 转代码:一条命令把 Issue 变成能跑的代码
  • 自动审查:新 PR 一开,自动审查代码质量、正确性和安全
  • 遵循项目标准:读你的 CLAUDE.md,按你团队的规矩办事
  • 代码不出运行器:代码留在 GitHub 的 runner 上跑,不外泄
Note

Claude Code GitHub Actions 建立在 Claude Agent SDK 之上。你可以用这个 SDK 搭出超越 GitHub Actions 的自定义自动化,这块在第 29 章会提到。

两种安装方式

快速安装(推荐)

在 Claude Code 终端里跑一个斜杠命令(Slash Command):

/install-github-app

它会交互式地引导你完成三件事:在你的仓库装上 Claude GitHub App、加好 GitHub Actions 工作流、配好 API 密钥。

v2.1.187 及以上版本,你可以选暂时跳过工作流步骤,只装 App,以后再跑一次 /install-github-app 回来完成工作流和密钥配置。

Warning

你必须是仓库管理员才能装 GitHub App 和加密钥。而且这个快速安装只适用于直接用 Claude API 的用户。如果你走 Amazon Bedrock 或 Google Cloud 的 Agent Platform,得看后面的手动配置部分。

手动安装

快速安装失败了,或者你就是想自己掌控,走手动三步:

  1. 装 Claude GitHub App:访问 https://github.com/apps/claude,装到你的仓库。它需要三个权限:Contents(读写)、Issues(读写)、Pull requests(读写)

  2. 加 API 密钥:在仓库的 Settings - Secrets and variables - Actions 里,加一个叫 ANTHROPIC_API_KEY 的密钥

  3. 复制工作流文件:从官方仓库的 examples/claude.yml 复制一份,放到你仓库的 .github/workflows/ 目录下

装完之后,在任意 Issue 或 PR 评论里 @claude 测试一下,看它是不是响应了。

工作流配置

Claude Code Action v1 把配置简化了,核心就一个 anthropics/claude-code-action@v1。它会根据你的配置自动判断是交互模式(响应 @claude 提及)还是自动化模式(直接用 prompt 跑)。

响应 @claude 提及

最基础的工作流,监听评论,谁 @claude 它就响应谁:

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

自动审查 PR

不想等人 @,PR 一开就自动审查。用 prompt 参数给指令,配合 PR 触发事件:

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."
          claude_args: "--max-turns 5"

synchronize 表示 PR 有新提交时也触发,这样每次 push 都会重新审查。

定时任务无人值守

用 GitHub Actions 的 schedule + cron 表达式,让 Claude 定时干活,机器关了也不影响:

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"

这个例子每天早上 9 点跑一次,让 Claude 汇总昨天的提交和未关闭的 Issue。

Tip

给定时任务写 prompt 时,把「成功长什么样」「结果怎么处理」说清楚。任务自己跑,没法反问你。比如「审查标记为 needs-review 的开放 PR,对问题留内联评论,摘要发到 Slack 频道」。

用 Skills 跑审查

prompt 参数不光能写纯文本,还能调技能(Skill)。下面这个工作流装上 code-review 插件,在每个新 PR 上跑它的审查 skill:

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 }}
          plugin_marketplaces: "https://github.com/anthropics/claude-plugins-official.git"
          plugins: "code-review@claude-plugins-official"
          prompt: "/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"

仓库 .claude/skills/ 里的本地 skill 也行,记得在 action 步骤前先跑 actions/checkout,然后传 /skill-name

@claude 常用命令

装好之后,在 PR 或 Issue 评论里直接 @ 它就行:

@claude implement this feature based on the issue description
@claude fix the TypeError in the user dashboard component
@claude review this PR for security issues
@claude add tests for this new function

Claude 会自动分析上下文,该改代码改代码,该回评论回评论。

Warning

触发词是 @claude,不是 /claude。写错了它不响应。trigger_phrase 参数可以改成别的词,但默认就是 @claude

Action 参数速查

v1 版本的常用参数:

参数说明必填
anthropic_api_keyClaude API 密钥是(直连 API 时)
prompt给 Claude 的指令,纯文本或 skill 名
claude_args传给 Claude Code 的 CLI 参数
github_token访问 GitHub API 的令牌
trigger_phrase自定义触发词,默认 @claude
plugin_marketplaces插件市场 Git URL 列表
plugins执行前要装的插件列表
use_bedrock用 Amazon Bedrock 代替直连 API
use_vertex用 Google Cloud 的 Agent Platform

claude_args 能接任何 Claude Code CLI 参数,常用的有:

  • --max-turns:最大对话轮数,默认 10
  • --model:指定模型,比如 claude-sonnet-5
  • --allowedTools / --disallowedTools:允许或禁止的工具
  • --mcp-config:MCP 配置文件路径
  • --debug:开调试输出
Note

从 beta 升级到 v1 有破坏性改动:mode 配置删了(现在自动检测),direct_prompt 改名 promptmax_turnsmodelcustom_instructions 这些都挪进了 claude_args。老工作流要照着官方的迁移表改一遍。

成本与安全

别把密钥写进代码

这是红线。API 密钥永远用 GitHub Secrets:

anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

千万别图省事直接写在工作流文件里,一旦仓库泄露,密钥就被人薅走了。

成本优化

跑 GitHub Actions 有两块成本:

  • GitHub Actions 分钟数:Claude 跑在 GitHub 托管的 runner 上,会消耗你的 Actions 配额
  • API token 费用:每次交互按 prompt 和响应长度消耗 token,任务越复杂、代码库越大花得越多

几个省钱招:

  • 用明确的 @claude 命令,减少不必要的 API 调用
  • claude_args 里配 --max-turns,防止 Claude 死循环迭代
  • 给工作流设超时,避免失控的 job 烧钱
  • 用 GitHub 的并发控制,限制并行运行数量

企业云部署

如果你公司用 Amazon Bedrock 或 Google Cloud 的 Agent Platform,不用直连 Anthropic API。配置上要加 use_bedrock: "true"use_vertex: "true",再用 OIDC 身份联合做认证,这样不用存静态密钥,更安全。

这块配置比较繁琐,涉及 IAM 角色、工作负载身份池等,建议让运维同学配合搞。详细步骤看官方文档的「Using with Amazon Bedrock and Google Cloud」部分。

排错小抄

Claude 不响应 @claude?按这个顺序查:

  1. GitHub App 装了没、装对仓库没
  2. 工作流文件在 .github/workflows/ 下没、启用了没
  3. ANTHROPIC_API_KEY 密钥加没加、名字对不对
  4. 评论里写的是 @claude 不是 /claude

CI 不在 Claude 的提交上跑?这是因为用 Actions 用户提交不会触发 CI。换成 GitHub App 或自定义 App 就行,它们的提交会正常触发后续工作流。