跳至主要内容

允许预构建访问其他存储库

你可以允许你的预构建访问其他 GitHub 存储库,以便成功构建它。

谁可以使用此功能?

具有存储库管理权限的人员可以为存储库配置预构建。

个人帐户拥有的所有存储库均可使用 GitHub Codespaces 的存储库级别设置。

对于组织拥有的存储库,GitHub Team 和 GitHub Enterprise 计划中的组织可以使用 GitHub Codespaces 的存储库级别设置。要访问这些设置,组织或其父企业必须添加一种付款方式并为 GitHub Codespaces 设置支出限额。有关详细信息,请参阅“选择组织中 Codespaces 的所有者和付款人”和“GitHub 的计划”。

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

允许预构建读取外部资源

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

备注:

  • 你只能通过这种方式授权读取权限,并且目标存储库的所有者必须与你为其创建预构建的存储库的所有者相同。例如,如果你为 octo-org/octocatrepository 创建预构建配置,那么如果你在 devcontainer.json 文件中指定了这一点,并且你拥有权限,你将能够授予其他存储库(例如 asocto-org/octodemo)的读取权限。
  • 你不能使用通配符来指定存储库。你必须为要授予访问权限的每个存储库定义权限。

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

允许预构建写入外部资源

如果你的项目需要对资源的写入访问权限,或者如果外部资源驻留在与你为其创建预构建配置的存储库不同的所有者的存储库中,你可以使用个人访问令牌来授予此访问权限。

你需要创建一个新的个人帐户,然后使用此帐户创建具有适当范围的个人访问令牌(经典)。

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

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

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

  3. 在登录新帐户时,使用repo范围创建一个个人访问令牌(经典)。如果预构建需要从 GitHub 容器注册表下载软件包,还可以选择read:packages范围。有关详细信息,请参阅“管理个人访问令牌”。

    Screenshot of the "Select scopes" configuration options for a personal access token (classic), with the "repo" and "read:packages" scopes selected.

    如果预构建将使用 GitHub 容器注册表中的软件包,则需要授予新帐户对该软件包的访问权限,或将该软件包配置为继承您正在预构建的存储库的访问权限。有关详细信息,请参阅“配置软件包的访问控制和可见性”。

  4. 复制令牌字符串。您会将其分配给 Codespaces 存储库机密。

  5. 重新登录具有存储库管理权限的帐户。

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

个人访问令牌将用于为您的存储库创建的所有后续预构建。与其他 Codespaces 存储库机密不同,CODESPACES_PREBUILD_TOKEN机密仅用于预构建,并且不能用于从您的存储库创建的 Codespaces 中。

延伸阅读