跳到主要内容

允许预构建访问其他代码库

您可以允许您的预构建访问其他 GitHub 代码库,以便成功构建。

谁可以使用此功能?

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

GitHub Codespaces 的仓库级设置适用于个人帐户拥有的所有仓库。

对于组织拥有的仓库,GitHub Codespaces 的仓库级设置适用于 GitHub 团队版和 GitHub Enterprise 版的组织。要访问这些设置,组织或其父级企业必须添加付款方式并为 GitHub Codespaces 设置支出限额。更多信息,请参阅“选择谁拥有并支付组织中的 Codespaces”和“GitHub 的计划”。

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

允许预构建读取外部资源访问权限

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

注意

  • 您只能通过这种方式授权读取权限,目标仓库的所有者必须与您为其创建预构建的仓库的所有者相同。例如,如果您正在为octo-org/octocatrepository创建预构建配置,那么如果在devcontainer.json文件中指定了权限,并且您自己拥有这些权限,则您可以为其他仓库(例如octo-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密钥仅用于预构建,不能用于从您的仓库创建的 codespace。

进一步阅读