Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

允许预生成访问其他存储库

可以允许预生成访问其他 GitHub 存储库,以便成功生成。

Who can use this feature

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

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

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

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

注意:只能通过这种方式授予读取权限,并且目标存储库的所有者必须与正在创建预生成的存储库的所有者相同。 例如,如果正在为 octo-org/octocat 存储库创建预生成配置,则你将能够为其他 octo-org/* 存储库授予读取权限(前提是 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”。

    为personal access token (classic)选择的“存储库”和“包”范围

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

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

    为personal access token (classic)配置 SSO 的按钮

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

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

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

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

延伸阅读