默认情况下, GitHub Actions 预生成配置的工作流只能访问其自己的存储库内容。 你的项目可能会使用其他位置的其他资源来生成开发环境。
允许预生成读取访问外部资源
您可以在预构建配置使用的 devcontainer.json 文件中指定权限,以配置对属于同一仓库所有者的其他 GitHub 仓库的读取权限。 有关详细信息,请参阅“管理对代码空间中其他存储库的访问权限”。
注意
- 只能通过这种方式授予读取权限,并且目标存储库的所有者必须与正在创建预生成的存储库的所有者相同。 例如,假设正在为
octo-org/octocatrepository创建预生成配置,则将能够为其他存储库(如octo-org/octodemo)授予读取权限(前提是devcontainer.json文件中对此进行了指定,且你本人具有这些权限)。 - 不能使用通配符来指定存储库。 必须为要授予访问权限的每个存储库定义权限。
为 devcontainer.json 文件(该文件设置对具有相同存储库所有者的其他存储库的读取访问权限)创建或编辑预生成配置时,系统会提示你在单击“创建”或“更新”时授予这些权限 。 有关详细信息,请参阅“配置预生成”。
允许预生成写入访问外部资源
如果您的项目需要对资源的写入权限,或者外部资源所在仓库的所有者与您为其创建预构建配置的仓库所有者不同,则可以使用一个 personal access token 来授予此类访问权限。
您需要创建一个新的个人账户,然后使用该账户创建具有相应作用域的 personal access token (classic)。
-
在GitHub上创建新的个人账户。
警告
虽然您可以使用现有的个人账户生成 personal access token (classic),但我们强烈建议创建一个新账户,使其仅具有对您的场景所需目标仓库的访问权限。 这是因为访问令牌的
repository权限允许访问该帐户可访问的所有存储库。 有关详细信息,请参阅 在 GitHub 上创建帐户 和 安全使用指南。 -
为新帐户提供对所需存储库的读取访问权限。 有关详细信息,请参阅“管理个人对组织仓库的访问”。
-
登录到新账户后,创建一个范围为
repo的personal access token (classic)。 (可选)如果 prebuild 需要从 GitHubContainer registry 下载软件包,还需选择read:packages范围。 有关详细信息,请参阅“管理个人访问令牌”。
如果预生成将使用包 GitHubContainer registry,则需要向新帐户授予对包的访问权限,或将包配置为继承预构建的存储库的访问权限。 有关详细信息,请参阅“配置包的访问控制和可见性”。
-
单击“配置 SSO”并授权将令牌用于 SAML 单一登录 (SSO),以便它可以访问启用了 SSO 的组织拥有的存储库。 有关详细信息,请参阅“授权个人访问令牌以与单点登录一起使用”。

-
复制令牌字符串。 你将把此项分配给 Codespaces 存储库密钥。
-
重新登录到有管理员权限访问存储库的帐户。
-
在要为其创建GitHub Codespaces预构建的存储库中,创建一个名为
CODESPACES_PREBUILD_TOKEN的新Codespaces存储库密钥,并将其值设为你创建并复制的令牌值。 有关详细信息,请参阅“管理存储库或组织的开发环境机密”。
personal access token 将用于该代码库后续创建的所有预构建。 与其他 Codespaces 存储库机密不同,CODESPACES_PREBUILD_TOKEN 机密仅用于预构建,无法在基于你的存储库创建的 codespace 中使用。