Skip to main content

服务器到服务器身份验证

当服务需要代表组织发出Copilot请求且没有用户凭据时,请使用生存期较短的安装访问令牌。 在GitHub Actions中,改用内置GITHUB_TOKEN

GitHub Actions

对于组织拥有的存储库中的工作流,请授予内置令牌权限,以发出Copilot请求:

permissions:
  contents: read
  copilot-requests: write

jobs:
  copilot:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - run: your-application
        env:
          GITHUB_TOKEN: $

必须启用组织允许使用向组织策略计费的 Copilot CLI。 此方法不需要GitHub应用或存储的身份验证机密。 有关详细信息,请参阅 在 GitHub Actions 中使用 GITHUB_TOKEN 运行 Copilot CLI

其他服务和 CI 系统

对于GitHub Actions之外的服务:

  1. 创建GitHub应用,其中Copilot请求存储库权限设置为 “读取和写入”。

  2. 将其安装在应计费的组织上。 当前Copilot权限检查需要所有存储库访问权限。

  3. 具有存储库 ID 和Copilot权限的 为 GitHub 应用生成安装访问令牌

    {
      "repository_ids": [123456789],
      "permissions": {
        "copilot_requests": "write"
      }
    }
    
  4. 将生成的 ghs_ 令牌作为 COPILOT_GITHUB_TOKEN.

必须为来自GitHub应用安装Copilot请求启用组织。 安装令牌在一小时后过期。

警告

不要通过 SDK 的 gitHubTokengithub_token等效选项传递安装令牌。 此选项适用于用户令牌。 安装令牌必须使用运行时环境身份验证路径。

配置运行时

以下示例假定 minted 令牌位于 INSTALLATION_TOKEN其中。 它们仅将其传递给子运行时,并禁用对存储的用户凭据的回退。

代码语言 navigation

TypeScript
import { CopilotClient, RuntimeConnection } from "@github/copilot-sdk";

const token = process.env.INSTALLATION_TOKEN;
if (!token) throw new Error("INSTALLATION_TOKEN is required");

const client = new CopilotClient({
    connection: RuntimeConnection.forStdio(),
    env: {
        ...process.env,
        COPILOT_GITHUB_TOKEN: token,
    },
    useLoggedInUser: false,
});

对于进程内 FFI,在加载运行时之前在主机环境中设置 COPILOT_GITHUB_TOKEN ;不支持按客户端环境选项。 对于现有运行时 URI,请在该运行时进程中设置它。

刷新令牌

在当前令牌过期之前,先挖掘新的安装令牌。 对于子进程,请使用新环境重启 SDK 客户端。 对于进程内或现有运行时,请使用新令牌重启主机运行时。

Billing

使用情况由拥有GitHub应用安装的帐户进行特性化和计费。 使用组织安装进行组织计费;用户帐户安装属性将使用该用户的使用情况。

Troubleshooting

症状检查
401 Unauthorized确认组织是否支持Copilot GitHub应用安装身份验证。
403 Resource not accessible by integration 或提及用户信息的错误确认安装令牌在内 COPILOT_GITHUB_TOKEN,而不是 SDK 的显式令牌选项。
403 Forbidden从 Copilot API确认令牌请求包含 repository_idscopilot_requests: write
403 Forbidden 包含所需令牌请求确认应用安装具有 “所有存储库 ”访问权限,然后挖掘一个新令牌。
请求的模型不可用确认组织的Copilot策略允许模型和捆绑运行时支持它。
错误的帐户计费确认安装属于预期组织。

延伸阅读