跳至主要内容

配置预构建

您可以配置您的项目,以便每次将更改推送到存储库时自动预构建 Codespace。

谁可以使用此功能?

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

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

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

您可以为存储库的特定分支与特定开发容器配置文件的组合设置预构建配置。

从启用预构建的父分支创建的任何分支通常也会获得相同开发容器配置的预构建。这是因为使用与父分支相同的开发容器配置的子分支的预构建在很大程度上是相同的,因此开发人员也可以从这些分支上更快的代码空间创建时间中受益。有关更多信息,请参阅“开发容器简介”。

通常,当您为分支配置预构建时,预构建将可用于多种机器类型。但是,如果您的仓库大于 32 GB,则预构建将不可用于 2 核和 4 核机器类型,因为它们提供的存储空间限制为 32 GB。

先决条件

预构建是使用 GitHub Actions 创建的。因此,必须为您要配置预构建的仓库启用 GitHub Actions。有关更多信息,请参阅“管理仓库的 GitHub Actions 设置”。

您可以在任何个人帐户拥有的仓库中设置预构建。预构建将消耗存储空间,这将产生计费费用,或者对于个人帐户拥有的仓库,将使用您每月包含的存储空间的一部分。

注意:如果您为分叉的仓库创建预构建,则这些预构建的存储成本将从您每月包含的存储空间中扣除,只要有可用空间。如果您已使用完所有包含的存储空间,并且已设置计费,则您的个人帐户将被计费。即使您为分叉创建的代码空间由拥有父仓库的组织付费,也是如此。有关更多信息,请参阅“关于 GitHub Codespaces 的计费”。

对于组织拥有的仓库,如果组织使用的是 GitHub 团队或 GitHub Enterprise 计划,则可以设置预构建。此外,您必须在组织帐户或其父级企业上添加付款方式并设置 GitHub Codespaces 的支出限额。有关更多信息,请参阅“管理 GitHub Codespaces 的支出限额”和“GitHub 的计划”。

配置预构建

  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 configuration" section of the "Codespaces" settings page, showing the "Set up prebuilds" button.

  5. 选择要为其设置预构建的分支。

    Screenshot of the "Configuration" settings for a prebuild with a dropdown menu listing branches to select. The "main" branch is currently selected.

    注意:从启用预构建的基分支创建的任何分支通常也会为相同的开发容器配置获得预构建。例如,如果您为仓库的默认分支上的开发容器配置文件启用预构建,则基于默认分支的分支在大多数情况下也会为相同的开发容器配置获得预构建。

  6. 可选地,在显示的配置文件下拉菜单中,选择要用于预构建的devcontainer.json配置文件。有关更多信息,请参阅“开发容器简介”。

    Screenshot of the configuration file dropdown menu. Four configuration files are listed, with ".devcontainer/devcontainer.json" currently selected.

  7. 选择您希望如何自动触发预构建更新。

    • 每次推送(默认设置) - 使用此设置,预构建将在每次对指定分支进行推送时更新。这将确保从预构建生成的 Codespace 始终包含最新的 Codespace 配置,包括任何最近添加或更新的依赖项。

    • 配置更改时 - 使用此设置,预构建将在每次更改以下任何文件时更新

      • .devcontainer/devcontainer.json

        注意:预构建更新不会因对 .devcontainer 子目录中的 devcontainer.json 文件的更改而触发。

      • .devcontainer/devcontainer.json 文件的 build.dockerfile 属性中引用的 Dockerfile。

      此设置确保在从预构建生成 Codespace 时使用存储库的开发容器配置文件的更改。更新预构建的 GitHub Actions 工作流程运行频率较低,因此此选项将使用更少的 GitHub Actions 分钟。但是,此选项不能保证 Codespace 始终包含最近添加或更新的依赖项,因此可能需要在创建 Codespace 后手动添加或更新这些依赖项。

    • 计划 - 使用此设置,您可以根据您定义的自定义计划更新预构建。这可以减少 GitHub Actions 分钟的消耗,但是,使用此选项,可能会创建不使用最新开发容器配置更改的 Codespace。

    Screenshot of the "Prebuild triggers" settings. The "Scheduled" option is selected and set to "Every day" at "1pm" and "3:30pm."

  8. 可以选择将可用的预构建减少到仅特定区域,以仅在指定的区域创建预构建。选择您希望预构建可用的区域。

    默认情况下,预构建将在所有可用区域创建,每个预构建都会产生存储费用。

    Screenshot of the "Region availability" settings. "Reduce prebuild available to only specific regions" is selected with two regions selected.

    说明:

    • 每个区域的预构建都会产生单独的存储费用。因此,您应该只为已知将使用预构建的区域启用预构建。有关更多信息,请参阅“关于 GitHub Codespace 的计费”。
    • 开发人员可以为 GitHub Codespace 设置其默认区域,这可以使您为更少的区域启用预构建。有关更多信息,请参阅“为 GitHub Codespace 设置您的默认区域”。
  9. 可以选择在模板历史记录下设置要保留的预构建版本的数量。您可以输入 1 到 5 之间的任何数字。默认保存的版本数量为 2,这意味着只保存最新的预构建和上一个版本。

    Screenshot of the "Template history" setting. It is set to 2 versions.

    根据您的预构建触发器设置,您的预构建可能会在每次推送或每次开发容器配置更改时发生变化。保留旧版本的预构建使您能够从具有与当前预构建不同的开发容器配置的较旧提交创建预构建。此设置允许您将保留的版本数量设置为适合您需求的级别。

    如果您将要保存的预构建版本数量设置为 1,GitHub Codespaces 将只保存预构建的最新版本,并在每次模板更新时删除旧版本。这意味着如果您返回到旧的开发容器配置,您将无法获得预构建的 Codespace。

    每个保留的预构建版本都与存储成本相关联。例如,如果您在 4 个区域生成预构建并保留 2 个版本,您将被收取最多 8 个预构建的存储费用。有关计费的更多信息,请参阅 "GitHub Codespaces 计费说明”。

  10. 您可以选择添加用户或团队,以便在为该配置运行预构建工作流时失败时收到通知。您可以开始键入用户名、团队名称或全名,然后单击该名称(一旦出现)将其添加到列表中。您添加的用户或团队将在预构建失败时收到电子邮件,其中包含指向工作流运行日志的链接,以帮助进一步调查。

    Screenshot of the "Failure notifications" setting. The team named "octocat-team" has been added.

    注意:只有在个人设置中启用了失败的 Actions 工作流的通知的人员才会收到失败的预构建的通知。有关更多信息,请参阅 "配置通知”。

  11. 您也可以选择在页面底部单击显示高级选项

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

    在“高级选项”部分,如果您选择禁用预构建优化,如果最新的预构建工作流失败或正在运行,Codespaces 将在没有预构建的情况下创建。有关更多信息,请参阅 "预构建故障排除”。

  12. 单击创建

    如果存储库的开发容器配置指定了访问其他存储库的权限,您将看到一个授权页面。有关如何在 devcontainer.json 文件中指定此内容的更多信息,请参阅 "管理 Codespace 中对其他存储库的访问权限”。

    单击 以查看请求的权限的详细信息。

    Screenshot of an authorization page for a prebuild configuration. Three permissions are listed in this request.

    点击**授权并继续**以授予这些权限以创建预构建。或者,您可以点击**继续而不授权**,但如果您这样做,从生成的预构建创建的 Codespaces 可能无法正常工作。

    **注意**:使用此预构建创建 Codespaces 的用户也将被要求授予这些权限。

创建预构建配置后,它将列在您的存储库设置的 GitHub Codespaces 页面上。一个 GitHub Actions 工作流将被排队并运行,以根据您选择的分支和开发容器配置文件,在您指定的区域创建预构建。

Screenshot of the list of prebuild configurations. One prebuild is listed, labeled "Currently running." To the right of it is a "See output" button.

有关编辑和删除预构建配置的信息,请参阅“管理预构建”。

配置环境变量

为了允许预构建过程访问创建开发环境所需的的环境变量,您可以将这些变量设置为 Codespaces 存储库机密或 Codespaces 组织机密。您以这种方式创建的机密将可供任何从该存储库创建 Codespaces 的人访问。有关更多信息,请参阅“管理存储库或组织的开发环境机密”。

预构建在构建您的环境时无法使用任何用户级机密,因为这些机密在 Codespaces 创建后才可用。

配置要包含在预构建中的耗时任务

您可以在您的 devcontainer.json 中使用 onCreateCommandupdateContentCommand 命令,将耗时进程作为预构建创建的一部分包含在内。有关更多信息,请参阅 Visual Studio Code 文档,“devcontainer.json 参考”。

onCreateCommand 只在创建预构建时运行一次,而 updateContentCommand 在创建预构建时以及随后对其进行更新时运行。增量构建应包含在 updateContentCommand 中,因为它们代表您的项目的源代码,并且需要包含在每个预构建更新中。

进一步阅读