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