Skip to main content

允许预构建访问其他存储库

您可以允许预构建访问其他 GitHub 仓库,从而使其能够成功完成构建。

谁可以使用此功能?

People with admin access to a repository can configure prebuilds for the repository.

GitHub Codespaces 的存储库级设置适用于个人帐户拥有的所有存储库。

对于组织拥有的存储库,GitHub Codespaces 的存储库级别设置适用于使用 GitHub Team 和 GitHub Enterprise 计划的组织。 要访问设置,组织或其父企业必须已添加付款方式并为 GitHub Codespaces 设置了支出限制。 有关详细信息,请参阅 选择在您的组织中谁拥有和支付 Codespaces 的费用GitHub的计划

默认情况下, GitHub Actions 预生成配置的工作流只能访问其自己的存储库内容。 你的项目可能会使用其他位置的其他资源来生成开发环境。

允许预生成读取访问外部资源

您可以在预构建配置使用的 devcontainer.json 文件中指定权限,以配置对属于同一仓库所有者的其他 GitHub 仓库的读取权限。 有关详细信息,请参阅“管理对代码空间中其他存储库的访问权限”。

注意

  • 只能通过这种方式授予读取权限,并且目标存储库的所有者必须与正在创建预生成的存储库的所有者相同。 例如,假设正在为 octo-org/octocatrepository 创建预生成配置,则将能够为其他存储库(如 octo-org/octodemo)授予读取权限(前提是 devcontainer.json 文件中对此进行了指定,且你本人具有这些权限)。
  • 不能使用通配符来指定存储库。 必须为要授予访问权限的每个存储库定义权限。

devcontainer.json 文件(该文件设置对具有相同存储库所有者的其他存储库的读取访问权限)创建或编辑预生成配置时,系统会提示你在单击“创建”或“更新”时授予这些权限 。 有关详细信息,请参阅“配置预生成”。

允许预生成写入访问外部资源

如果您的项目需要对资源的写入权限,或者外部资源所在仓库的所有者与您为其创建预构建配置的仓库所有者不同,则可以使用一个 personal access token 来授予此类访问权限。

您需要创建一个新的个人账户,然后使用该账户创建具有相应作用域的 personal access token (classic)。

  1. 在GitHub上创建新的个人账户。

    警告

    虽然您可以使用现有的个人账户生成 personal access token (classic),但我们强烈建议创建一个新账户,使其仅具有对您的场景所需目标仓库的访问权限。 这是因为访问令牌的 repository 权限允许访问该帐户可访问的所有存储库。 有关详细信息,请参阅 在 GitHub 上创建帐户安全使用指南

  2. 为新帐户提供对所需存储库的读取访问权限。 有关详细信息,请参阅“管理个人对组织仓库的访问”。

  3. 登录到新账户后,创建一个范围为repo的personal access token (classic)。 (可选)如果 prebuild 需要从 GitHubContainer registry 下载软件包,还需选择 read:packages 范围。 有关详细信息,请参阅“管理个人访问令牌”。

    personal access token (classic) 的“选择范围”配置选项的屏幕截图,其中选择了“存储库”和“read:packages”范围。

    如果预生成将使用包 GitHubContainer registry,则需要向新帐户授予对包的访问权限,或将包配置为继承预构建的存储库的访问权限。 有关详细信息,请参阅“配置包的访问控制和可见性”。

  4. 单击“配置 SSO”并授权将令牌用于 SAML 单一登录 (SSO),以便它可以访问启用了 SSO 的组织拥有的存储库。 有关详细信息,请参阅“授权个人访问令牌以与单点登录一起使用”。

    “Personal access tokens (classic)”页面的截图。 PAT 的“配置 SSO”按钮以深橙色边框突出显示。

  5. 复制令牌字符串。 你将把此项分配给 Codespaces 存储库密钥。

  6. 重新登录到有管理员权限访问存储库的帐户。

  7. 在要为其创建GitHub Codespaces预构建的存储库中,创建一个名为CODESPACES_PREBUILD_TOKEN的新Codespaces存储库密钥,并将其值设为你创建并复制的令牌值。 有关详细信息,请参阅“管理存储库或组织的开发环境机密”。

personal access token 将用于该代码库后续创建的所有预构建。 与其他 Codespaces 存储库机密不同,CODESPACES_PREBUILD_TOKEN 机密仅用于预构建,无法在基于你的存储库创建的 codespace 中使用。

其他阅读材料