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