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 设置了支出限制。 有关详细信息,请参阅“选择谁拥有组织中的 codespace 并为其付费”和“GitHub 的计划”。

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

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

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

注意:

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

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

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

如果项目需要对资源的写权限,或者如果外部资源所驻留存储库的所有者与正创建预生成配置的存储库的所有者不同,则可以使用 personal access token 授予此访问权限。

你将需要新建个人帐户,然后使用此帐户创建具有适当范围的personal access token (classic)。

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

    警告:虽然可以使用现有的个人帐户生成personal access token (classic),但我们强烈建议创建一个新帐户,仅访问方案所需的目标存储库。 这是因为访问令牌的 repository 权限会授予对帐户有权访问的所有存储库的访问权限。 有关详细信息,请参阅“在 GitHub 上创建帐户”和“GitHub Actions 的安全强化”。

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

  3. 登录到新帐户时,使用 repo 范围创建personal access token (classic)。 (可选)如果预生成需要从 GitHub Container registry 下载包,则还要选择 read:packages 范围。 有关详细信息,请参阅“管理个人访问令牌”。

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

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

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

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

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

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

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

personal access token将用于为存储库创建的所有后续预生成。 与其他 Codespaces 存储库机密不同,CODESPACES_PREBUILD_TOKEN 机密仅用于预生成,不可用于从存储库创建的 codespace。

延伸阅读