{"meta":{"title":"允许预构建访问其他存储库","intro":"您可以允许预构建访问其他 GitHub 仓库，从而使其能够成功完成构建。","product":"Codespaces","breadcrumbs":[{"href":"/zh/codespaces","title":"Codespaces"},{"href":"/zh/codespaces/prebuilding-your-codespaces","title":"预生成 codespaces"},{"href":"/zh/codespaces/prebuilding-your-codespaces/allowing-a-prebuild-to-access-other-repositories","title":"允许外部存储库访问"}],"documentType":"article"},"body":"# 允许预构建访问其他存储库\n\n您可以允许预构建访问其他 GitHub 仓库，从而使其能够成功完成构建。\n\n默认情况下， GitHub Actions 预生成配置的工作流只能访问其自己的存储库内容。 你的项目可能会使用其他位置的其他资源来生成开发环境。\n\n## 允许预生成读取访问外部资源\n\n您可以在预构建配置使用的 GitHub 文件中指定权限，以配置对属于同一仓库所有者的其他 `devcontainer.json` 仓库的读取权限。 有关详细信息，请参阅“[管理对代码空间中其他存储库的访问权限](/zh/codespaces/managing-your-codespaces/managing-repository-access-for-your-codespaces)”。\n\n> \\[!NOTE]\n>\n> * 只能通过这种方式授予读取权限，并且目标存储库的所有者必须与正在创建预生成的存储库的所有者相同。 例如，假设正在为 `octo-org/octocatrepository` 创建预生成配置，则将能够为其他存储库（如 `octo-org/octodemo`）授予读取权限（前提是 `devcontainer.json` 文件中对此进行了指定，且你本人具有这些权限）。\n> * 不能使用通配符来指定存储库。 必须为要授予访问权限的每个存储库定义权限。\n\n为 `devcontainer.json` 文件（该文件设置对具有相同存储库所有者的其他存储库的读取访问权限）创建或编辑预生成配置时，系统会提示你在单击“创建”或“更新”时授予这些权限 。 有关详细信息，请参阅“[配置预生成](/zh/codespaces/prebuilding-your-codespaces/configuring-prebuilds#configuring-prebuilds)”。\n\n## 允许预生成写入访问外部资源\n\n如果您的项目需要对资源的写入权限，或者外部资源所在仓库的所有者与您为其创建预构建配置的仓库所有者不同，则可以使用一个 personal access token 来授予此类访问权限。\n\n您需要创建一个新的个人账户，然后使用该账户创建具有相应作用域的 personal access token (classic)。\n\n1. 在GitHub上创建新的个人账户。\n\n   > \\[!WARNING]\n   > 虽然您可以使用现有的个人账户生成 personal access token (classic)，但我们强烈建议创建一个新账户，使其仅具有对您的场景所需目标仓库的访问权限。 这是因为访问令牌的 `repository` 权限允许访问该帐户可访问的所有存储库。 有关详细信息，请参阅 [在 GitHub 上创建帐户](/zh/account-and-profile/how-tos/account-management/creating-an-account-on-github) 和 [安全使用指南](/zh/actions/reference/security/secure-use)。\n\n2. 为新帐户提供对所需存储库的读取访问权限。 有关详细信息，请参阅“[管理个人对组织仓库的访问](/zh/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/managing-an-individuals-access-to-an-organization-repository)”。\n\n3. 登录到新帐户时，使用 personal access token (classic) 范围创建一个 `repo`。 （可选）如果 prebuild 需要从 GitHubContainer registry 下载软件包，还需选择 `read:packages` 范围。 有关详细信息，请参阅“[管理个人访问令牌](/zh/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)”。\n\n   ![personal access token (classic) 的“选择范围”配置选项的屏幕截图，其中选择了“存储库”和“read:packages”范围。](/assets/images/help/codespaces/prebuilds-select-scopes.png)\n\n   如果预生成将使用包 GitHubContainer registry，则需要向新帐户授予对包的访问权限，或将包配置为继承预构建的存储库的访问权限。 有关详细信息，请参阅“[配置包的访问控制和可见性](/zh/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility)”。\n\n4. 复制令牌字符串。 你将把此项分配给 Codespaces 存储库密钥。\n\n5. 重新登录到有管理员权限访问存储库的帐户。\n\n6. 在要为其创建 GitHub Codespaces 预生成的存储库中，创建一个名为 Codespaces 的新 `CODESPACES_PREBUILD_TOKEN` 存储库密钥，并将其值设为你创建并复制的令牌值。 有关详细信息，请参阅“[管理存储库或组织的开发环境机密](/zh/codespaces/managing-codespaces-for-your-organization/managing-development-environment-secrets-for-your-repository-or-organization#adding-secrets-for-a-repository)”。\n\npersonal access token 将被用于为存储库创建的所有后续预生成。 与其他 Codespaces 存储库机密不同，`CODESPACES_PREBUILD_TOKEN` 机密仅用于预构建，无法在基于你的存储库创建的 codespace 中使用。\n\n## 其他阅读材料\n\n* [配置预生成](/zh/codespaces/prebuilding-your-codespaces/configuring-prebuilds)\n* [对预构建进行故障排除](/zh/codespaces/troubleshooting/troubleshooting-prebuilds)"}