跳至主要内容

预构建疑难解答

您可以使用预构建来加快 Codespaces 的创建速度。本文提供了预构建常见问题的疑难解答步骤。

有关 GitHub Codespaces 预构建的更多信息,请参阅“预构建 Codespaces”。

如何检查 Codespace 是否是从预构建创建的?

创建 Codespace 时,您可以选择要使用的虚拟机的类型。如果虚拟机的类型有可用的预构建,则“预构建就绪”会显示在其旁边。

Screenshot of a list of available machine types: 2, 4, 8, 16, and 32 core, all labeled "Prebuild ready."

如果您的 GitHub Codespaces 编辑器首选项设置为“Visual Studio Code for Web”,则如果正在使用预构建,“设置 Codespace”页面将显示消息“找到预构建 Codespace”。

Screenshot of the "Setting up your codespace" page, with the text: "Prebuilt codespace found. Downloading image."

同样,如果您的编辑器首选项为“VS Code”,则在创建新的 Codespace 时,集成终端将包含消息“您位于存储库的预构建配置定义的预构建 Codespace 上”。有关更多信息,请参阅“设置 GitHub Codespaces 的默认编辑器”。

创建 Codespace 后,您可以通过在终端中运行以下 GitHub CLI 命令来检查它是否是从预构建创建的

Shell
gh api /user/codespaces/$CODESPACE_NAME --jq .prebuild

如果 Codespace 是使用预构建创建的,则返回 true

或者,如果未安装 GitHub CLI (gh),则可以使用以下命令,如果 Codespace 是从预构建创建的,则返回 createFromPrebuild

Shell
cat /workspaces/.codespaces/shared/environment-variables.json | jq '.ACTION_NAME'

检查预构建的使用情况

您可以在存储库设置的“Codespaces”页面中检查存储库是否正在使用预构建。

您可以通过查看个人或组织帐户的计费数据来检查预构建在您当前计费周期中消耗了多少存储空间。您还可以生成使用情况报告以查看哪些存储库一直在使用预构建。有关更多信息,请参阅“查看 GitHub Codespaces 使用情况”。

“预构建就绪”标签有时会丢失

您可能会注意到,有时,当您从启用预构建的分支创建新的 Codespace 时,“预构建就绪”标签不会显示在选择机器类型的对话框中。这意味着当前无法使用预构建。

默认情况下,每次您推送到启用了预构建的分支时,都会更新预构建。如果推送涉及对开发容器配置的更改,则在更新进行期间,将从机器类型列表中删除“预构建就绪”标签。在此期间,您仍然可以在没有预构建的情况下创建 Codespaces。如果需要,您可以减少存储库中预构建不可用的情况,方法是将预构建设置为仅在您更改开发容器配置文件时或仅根据自定义计划进行更新。有关更多信息,请参阅“配置预构建”。

如果您的分支未专门启用预构建,但如果它从启用了预构建的分支分支而来,它可能仍然会受益于预构建。但是,如果在您的分支上更改了开发容器配置,使其与基础分支上的配置不同,则您的分支上将不再提供预构建。

以下是如果“预构建就绪”标签未显示在特定分支上的检查事项

  • 确认此分支存在预构建配置。如果您不是存储库管理员,则需要联系管理员以确认这一点。
  • 确认预构建配置包含您的区域。
  • 检查最近是否将开发容器配置的更改推送到启用了预构建的分支。如果是这样,您通常需要等到此推送的预构建工作流运行完成才能再次使用预构建。
  • 如果最近未进行任何配置更改,请转到存储库的“**操作**”选项卡,单击** Codespaces 预构建**,在工作流列表中,并检查分支的预构建工作流运行是否成功。如果工作流的最新运行失败,并且这些失败运行中的一个或多个包含对开发容器配置的更改,则关联分支将没有可用的预构建。

某些资源无法在使用预构建创建的 Codespaces 中访问

如果预构建配置的devcontainer.json配置文件指定需要访问其他存储库的权限,则存储库管理员在创建或更新预构建配置时会收到提示以授权这些权限。如果管理员未授予所有请求的权限,则预构建和从此预构建创建的 Codespaces 中可能会出现问题。即使基于此预构建创建 Codespaces 的用户在收到提示时确实授予了所有权限,情况也是如此。

预构建失败工作流运行的故障排除

提高 GitHub Actions 支出限额

预构建是使用 GitHub Actions 创建和更新的。如果已用完所有 GitHub Actions 分钟并达到支出限额,则您的预构建工作流将失败。如果发生这种情况,您可以提高 GitHub Actions 支出限额以允许工作流运行。有关更多信息,请参阅“管理 GitHub Actions 的支出限额”。

授权访问权限

如果预构建配置的devcontainer.json配置文件更新为指定需要访问其他存储库的权限,并且尚未提示存储库管理员为预构建配置授权这些权限,则预构建工作流可能会失败。尝试更新预构建配置,而无需进行任何更改。如果在单击“更新”时显示授权页面,请检查请求的权限是否合适,如果合适,请授权请求。有关更多信息,请参阅“管理预构建”和“管理 Codespaces 内对其他存储库的访问”。

如果预构建配置的工作流运行失败,您可以在调查期间暂时禁用预构建配置。有关更多信息,请参阅“管理预构建”。

防止使用过时的预构建

默认情况下,如果最新的预构建工作流失败,则将使用之前针对相同存储库、分支和devcontainer.json配置文件组合的预构建来创建新的 Codespaces。此行为称为预构建优化。

我们建议保持启用预构建优化,因为它有助于确保如果无法使用最新的预构建,仍然可以快速创建 Codespaces。但是,作为存储库管理员,如果您遇到预构建 Codespaces 落后于分支当前状态的问题,可以禁用预构建优化。如果禁用预构建优化,则如果最新的预构建工作流失败或当前正在运行,则将针对相关存储库、分支和devcontainer.json文件的组合创建 Codespaces,而无需预构建。

  1. 在 GitHub 上,导航到存储库的主页。

  2. 在您的存储库名称下,单击 **设置**。如果您看不到“设置”选项卡,请选择****下拉菜单,然后单击“设置”。

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. 在侧边栏的“代码和自动化”部分,单击** Codespaces**。

  4. 在受影响的预构建配置的右侧,选择省略号(**...**),然后单击“**编辑**”。

    Screenshot of the prebuild options dropdown with "Edit" highlighted.

  5. 滚动到“编辑配置”页面底部,然后单击“**显示高级选项**”。

    Screenshot of the bottom of the prebuilds configuration page. The link "Show advanced options" is highlighted with a dark orange outline.

  6. 如果您确定要禁用默认设置,请选择“**禁用预构建优化**”。

    Screenshot of the "Advanced options" settings. The checkbox labeled "Disable prebuild optimization" is selected. Under this is the "Update" button.

  7. 要保存更改,请单击“**更新**”。

进一步阅读