Skip to main content

对预生成进行故障排除

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

有关 GitHub Codespaces 预生成的详细信息,请参阅“预生成 codespaces”。

检查是否从预生成创建 codespace?

创建 codespace 时,可选择要使用的虚拟机类型。 如果预生成可用于该类型的虚拟机,其旁边会显示“ 预生成就绪”。

可用计算机类型的列表的屏幕截图:2 核、4 核、8 核、16 核和 32 核,全部标记为“预生成就绪”。

如果将 GitHub Codespaces 编辑器首选项设置为“Visual Studio Code for Web”,则“设置 codespace”页面将显示“找到预生成 codespace”消息(如果正在使用预生成)。

“设置 codespace”页的屏幕截图,其中包含文本:“找到预生成的 codespace。 下载图像”。

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

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

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

如果 codespace 是使用预生成创建的,则返回 true

或者,如果未安装 GitHub CLI (gh),则可以使用以下命令,该命令返回 createFromPrebuild(如果从预生成创建 codespace):

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

检查预生成使用情况

可以在存储库设置的“Codespaces”页中检查存储库是否正在使用预生成。

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

有时缺少“预生成就绪”标签

你可能会注意到,有时,当从启用预生成的分支创建新 codespace 时,选择计算机类型的对话框中不会显示“ 预生成就绪”标签。 这意味着预生成当前不可用。

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

如果你的分支没有专门为预生成启用,如果它是从启用预生成的分支分出来的,它仍然可以从预生成中受益。 但是,如果分支上的开发容器配置已更改,变得与基础分支上的配置不同,则分支上将不再提供预生成。

检查特定分支是否未显示“ 预生成就绪”标签需要完成以下事项:

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

在使用预生成创建的 codespace 中无法访问某些资源

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

失败的预生成工作流运行故障排除

提高 GitHub Actions 支出限制

预生成是使用 GitHub Actions 创建和更新的。 如果用完了所有 GitHub Actions 分钟数并达到了支出限制,你的预生成工作流将会失败。 如果发生这种情况,可以增加 GitHub Actions 支出限制,以允许工作流运行。 有关详细信息,请参阅“管理 GitHub Actions 的支出限制”。

授予访问权限

如果更新了预生成配置的 devcontainer.json 配置文件以指定需要其他存储库的访问权限,并且系统未提示存储库管理员为预生成配置授权这些权限,则预生成工作流可能会失败。 尝试在不进行任何更改的情况下更新预生成配置。 如果单击“更新”显示了授权页面,请检查请求的权限是否合适,如果合适,请授权该请求。 有关详细信息,请参阅“管理预生成”和“管理对代码空间中其他存储库的访问权限”。

如果预生成配置的工作流运行失败,则可以在调查时暂时禁用预生成配置。 有关详细信息,请参阅“管理预生成”。

防止使用过时预生成

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

建议启用预生成优化,因为它有助于确保在最新预生成不可用时仍可快速创建 codespace。 但如果遇到预生成 codespace 落后于分支当前状态的问题,存储库管理员可以禁用预生成优化。 如果禁用预生成优化,则当最新的预生成工作流失败或当前正在运行时,将在没有预生成的情况下创建存储库、分支和 devcontainer.json 文件相关组合的 codespace。

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

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

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

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

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

    预生成选项下拉列表的屏幕截图,其中突出显示了“编辑”。

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

    预生成配置页底部的屏幕截图。 “显示高级选项”链接以深橙色轮廓突出显示。

  6. 如果确定要禁用默认设置,请选择“禁用预生成优化”。

    “高级选项”设置的屏幕截图。 已选中标有“禁用预生成优化”的复选框。 下面是“更新”按钮。

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

延伸阅读