GitHub Actions 配合云提供商
通过 Amazon Bedrock、Google Cloud Agent Platform 或 Microsoft Foundry 运行 Claude Code GitHub Action:选择提供商、前提、GitHub 身份、云端 OIDC 信任配置、仓库密钥、workflow 示例与排障。
Claude Code GitHub Actions 默认调用 Claude API。要改为通过你自己的云账号路由推理,设置 Claude Code GitHub Action 的 provider 输入,并配置你的云信任 workflow 的 OpenID Connect(OIDC)令牌。workflow 用这个令牌认证,所以仓库里不用存任何长期云凭据。本页建立在 GitHub Actions 设置之上,假定你已了解 workflow 文件和 anthropics/claude-code-action 步骤,只讲云提供商带来的变化。
选择提供商
Claude Code GitHub Action 支持三个提供商,下面的步骤只有云端配置不同。使用你的组织已有 Claude 模型访问权限的那个,在 anthropics/claude-code-action 步骤的 with: 块里用一个输入指定:
- Amazon Bedrock:
use_bedrock: "true" - Google Cloud Agent Platform:
use_vertex: "true" - Microsoft Foundry:
use_foundry: "true"
前提
- 对运行 Claude Code GitHub Action 的仓库有管理员权限,以安装 GitHub App 和添加密钥
- 在你的云账号里创建身份资源的权限:AWS 上的 IAM 角色和 OIDC 身份提供商,Google Cloud 上的 Workload Identity Federation 资源和服务账号,或 Azure 上的 Microsoft Entra 应用
- 你的提供商上的 Claude 模型访问:Amazon Bedrock 需要已授权 Claude 模型(跨区域推理配置文件,如本页示例里的
us.模型 ID,需要在其区域组的每个区域都授予访问);Google Cloud Agent Platform 需要启用了 Agent Platform API 并有 Claude 模型访问的项目;Microsoft Foundry 需要有 Claude 模型部署的 Foundry 资源
设置集成
除前提外,你要为 Claude Code GitHub Action 创建一个 GitHub 身份、云端信任配置、仓库密钥和 workflow 文件。
1. 选择 GitHub 身份
Claude Code GitHub Action 通过一个 GitHub 身份推送提交和发布评论。快速设置会为此安装官方 Claude GitHub App;用云提供商时由你自己选择身份:
- 官方 Claude GitHub App:安装到仓库(已安装就跳过)
- 自定义 GitHub App:当你只想要 Claude Code GitHub Action 用到的三个权限,而不是官方应用的全套权限时,创建自己的应用
- GitHub 自动的
GITHUB_TOKEN:不需要创建或安装应用,但 GitHub 不会因用它做出的提交而触发你的 CI workflow
要创建自定义应用,注册一个禁用 webhook 的新 GitHub App(此集成不使用 webhook),授予三个仓库权限:Contents、Issues、Pull requests,都是读写。注册后生成私钥并保存下载的 .pem 文件,记下应用设置页的 App ID,并把应用安装到运行 Claude Code GitHub Action 的仓库;第三步把私钥和 ID 添加为密钥。
2. 配置云认证
配置你的云信任 GitHub 为 workflow 签发的 OIDC 令牌,使每次 workflow 运行得到短期云凭据。
- Amazon Bedrock:在 AWS 账号里按 AWS 的创建 OIDC 身份提供商指南建立信任配置:添加提供商 URL 为
https://token.actions.githubusercontent.com、受众为sts.amazonaws.com的 GitHub OIDC 身份提供商;创建被该提供商作为 web identity 信任的 IAM 角色,并附加 IAM 配置里的限定调用策略(授予bedrock:InvokeModel、bedrock:InvokeModelWithResponseStream、bedrock:ListInferenceProfiles、bedrock:GetInferenceProfile,外加两个aws-marketplace订阅动作);用repo:your-org/your-repo:*这样的主体条件把角色的信任策略限制到你的仓库。记下角色 ARN。 - Google Cloud Agent Platform:在项目里按 Workload Identity Federation 文档创建联合资源:启用三个 API(IAM Credentials、Security Token Service(STS)和服务名为
aiplatform.googleapis.com的 Agent Platform API);创建 Workload Identity Pool,带发行者为https://token.actions.githubusercontent.com的 GitHub OIDC 提供商,并添加把池限定到你仓库的属性条件;创建只有Vertex AI User角色(roles/aiplatform.user)的专用服务账号,并允许池模拟它。记下提供商的完整资源名和服务账号邮箱。 - Microsoft Foundry:按微软的 GitHub Actions 认证指南创建带联合凭据的 Microsoft Entra 应用:注册 Entra 应用并添加信任 GitHub 为你仓库签发的令牌的联合身份凭据(用户分配的托管标识也可以代替应用);在你的 Foundry 资源上给应用分配
Azure AI User角色(更窄的自定义角色见 Azure RBAC 配置)。记下应用的客户端 ID、租户 ID 和订阅 ID。
3. 添加仓库密钥
在运行 Claude Code GitHub Action 的仓库里添加你的提供商的密钥,以及第一步创建了自定义 GitHub App 时的两个应用密钥:
| 密钥 | 用于 | 值 |
|---|---|---|
AWS_ROLE_TO_ASSUME | Amazon Bedrock | IAM 角色的 ARN |
GCP_WORKLOAD_IDENTITY_PROVIDER | Google Cloud Agent Platform | 提供商的完整资源名 |
GCP_SERVICE_ACCOUNT | Google Cloud Agent Platform | 服务账号的邮箱 |
AZURE_CLIENT_ID | Microsoft Foundry | Entra 应用的客户端 ID |
AZURE_TENANT_ID | Microsoft Foundry | 你的 Microsoft Entra 租户 ID |
AZURE_SUBSCRIPTION_ID | Microsoft Foundry | 你的 Azure 订阅 ID |
APP_ID | 自定义 GitHub App | GitHub App 的 ID |
APP_PRIVATE_KEY | 自定义 GitHub App | .pem 私钥文件的内容 |
4. 创建 workflow 文件
为你的提供商创建 workflow 文件,如 .github/workflows/claude.yml。每个示例响应 @claude 提及,用自定义应用向 GitHub 认证,并包含 id-token: write 权限(GitHub 签发云提供商用来交换凭据的 OIDC 令牌所必需)。如果第一步选了别的 GitHub 身份:用官方 Claude GitHub App 就删掉生成 GitHub App 令牌的步骤和 github_token 行;用 GitHub 自动令牌就删掉令牌生成步骤并把 github_token 行改成 github_token: ${{ secrets.GITHUB_TOKEN }}。
警告:在公开仓库里,任何用户发的包含触发短语的评论都会启动这个 workflow。凭据步骤在 Claude Code GitHub Action 检查评论者的写权限之前运行,所以 action 是在 workflow 已经生成 App 令牌并登录你的云提供商之后才拒绝未授权用户,这会留下审计日志条目并消耗资源。
下面以 Bedrock 为例(Agent Platform 和 Foundry 只有认证步骤和 with/env 不同):
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]
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') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- 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'把 aws-region 换成你自己的(凭据步骤会把它导出为 AWS_REGION)。Bedrock 模型 ID 带有 us. 这样的跨区域推理配置文件前缀,用你授予了模型访问的区域组对应的前缀。
Google Cloud Agent Platform 的变化:认证步骤换成 google-github-actions/auth@v2(id: auth,传 workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }} 和 service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }});claude-code-action 步骤用 use_vertex: "true",env 里设 ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}(无需硬编码项目 ID)和你自己的 CLOUD_ML_REGION(如 us-east5)。
Microsoft Foundry 的变化:认证步骤换成 azure/login@v2(传 client-id、tenant-id、subscription-id 三个密钥);claude-code-action 步骤用 use_foundry: "true",env 里设 ANTHROPIC_FOUNDRY_RESOURCE: your-resource-name(Claude Code 据此构建端点 URL;azure/login 用 workflow 的 OIDC 令牌登录,Claude Code 通过 Azure 默认凭据链获取凭据)。模型 ID 要与你 Foundry 资源里的某个 Claude 部署匹配。
无论哪个提供商,都可以在 claude_args 里加 --max-turns 来限制运行时长和成本。
5. 测试设置
在 issue 或 PR 评论里提及 @claude,在仓库的 Actions 标签页观察运行;Claude 在同一 issue 或 PR 里回复评论。
排障
失败的运行通常坏在两处:认证错误,通常是 OIDC 配置不当:检查 workflow 包含 id-token: write 权限、信任配置里的仓库条件与你的仓库完全匹配、workflow 里的密钥名与你添加的一致;触发和 CI 问题,与 Claude Code GitHub Action 调用 Claude API 时一样,见主页的排障一节和该 Action 的 FAQ。