跳至主要内容

预构建故障排除

您可以使用预构建来加快 Codespace 的创建速度。本文提供了有关预构建常见问题的故障排除步骤。

有关 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 时, “预构建就绪”标签不会显示在选择机器类型的对话框中。这意味着预构建当前不可用。

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

如果您的分支没有专门启用预构建,但它从启用预构建的分支分支出来,它仍然可以从预构建中受益。但是,如果您的分支上的开发容器配置发生了更改,使其与基本分支上的配置不同,那么您的分支上将不再提供预构建。

以下是检查“ 特定分支未显示“预构建就绪”标签

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

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

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

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

提高 GitHub Actions 支出限额

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

授权访问权限

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

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

防止使用过时的预构建

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

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

  1. 在 GitHub.com 上,导航到仓库的主页。

  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. 要保存更改,请点击更新

进一步阅读