您可以为仓库的特定分支与特定开发容器配置文件的组合设置预构建配置。
从启用预构建的父分支创建的任何分支通常也会获得相同开发容器配置的预构建。这是因为使用与父分支相同开发容器配置的子分支的预构建在大多数情况下是相同的,因此开发人员也可以从更快的 Codespace 创建时间中受益。请参阅“开发容器简介”。
通常,当您为分支配置预构建时,预构建将可用于多种机器类型。但是,如果您的仓库大于 32 GB,则预构建将不可用于 2 核和 4 核机器类型,因为这些机器提供的存储空间限制为 32 GB。
先决条件
预构建是使用 GitHub Actions 创建的。因此,必须为要为其配置预构建的仓库启用 GitHub Actions。请参阅“管理仓库的 GitHub Actions 设置”。
您可以在任何个人帐户拥有的仓库中设置预构建。预构建将消耗存储空间,这将产生计费费用,或者对于个人帐户拥有的仓库,将使用您每月包含的存储空间的一部分。
注意
如果您为派生仓库创建预构建,则这些预构建的存储成本将在可用时从您每月包含的存储空间中扣除。如果您已使用完所有包含的存储空间,并且已设置账单,则您的个人帐户将被计费。即使您为派生仓库创建的 Codespace 由拥有父仓库的组织付费,情况也是如此。请参阅“关于 GitHub Codespaces 的计费”。
对于组织拥有的仓库,如果组织使用 GitHub Team 或 GitHub Enterprise 计划,您可以设置预构建。此外,您必须在组织帐户或其父级企业上添加付款方式并设置 GitHub Codespaces 的支出限额。请参阅“管理 GitHub Codespaces 的支出限额”和“GitHub 的计划”。
配置预构建
-
在 GitHub 上,导航到仓库的主页。
-
在您的仓库名称下,单击 设置。如果您看不到“设置”选项卡,请选择下拉菜单,然后单击设置。

-
在侧边栏的“代码和自动化”部分,单击 Codespaces。
-
在页面上的“预构建配置”部分,单击设置预构建。

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

注意
从启用预构建的基础分支创建的任何分支通常也会获得相同开发容器配置的预构建。例如,如果您为仓库的默认分支上的开发容器配置文件启用预构建,则基于默认分支的分支在大多数情况下也会获得相同开发容器配置的预构建。
-
可选地,在显示的配置文件下拉菜单中,选择要用于预构建的
devcontainer.json配置文件。请参阅“开发容器简介”。
-
选择您希望如何自动触发预构建更新。
-
每次推送(默认设置) - 使用此设置,预构建将在对给定分支进行的每次推送时更新。这将确保从预构建生成的 Codespace 始终包含最新的 Codespace 配置,包括任何最近添加或更新的依赖项。
-
配置更改时 - 使用此设置,每当以下任何文件更改时,预构建都会更新
-
.devcontainer/devcontainer.json注意
预构建更新不会因
.devcontainer子目录中devcontainer.json文件的更改而触发。 -
.devcontainer/devcontainer.json文件的build.dockerfile属性中引用的 Dockerfile。
此设置确保在从预构建生成 Codespace 时使用仓库的开发容器配置文件的更改。更新预构建的 GitHub Actions 工作流程运行频率将降低,因此此选项将使用更少的 GitHub Actions 分钟数。但是,此选项不能保证 Codespace 始终包含最近添加或更新的依赖项,因此可能需要在创建 Codespace 后手动添加或更新这些依赖项。
-
-
计划 - 使用此设置,您可以根据您定义的自定义计划更新预构建。这可以减少 GitHub Actions 分钟数的消耗,但是,使用此选项,可能会创建不使用最新开发容器配置更改的 Codespace。

-
-
可选地,选择将预构建可用性限制在特定区域以仅在指定的区域中创建预构建。
默认情况下,预构建在所有可用区域中创建,每个预构建都会产生存储费用。

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

根据您的预构建触发器设置,您的预构建可能会随着每次推送或每次开发容器配置更改而更改。保留旧版本的预构建使您可以从具有与当前预构建不同的开发容器配置的旧提交创建预构建。此设置允许您将保留的版本数设置为适合您需求的级别。
如果您将要保存的预构建版本数设置为 1,GitHub Codespaces 将只保存最新版本的预构建,并在每次更新模板时删除旧版本。这意味着如果您返回到旧的开发容器配置,您将不会获得预构建的 Codespace。
保留的每个预构建版本都会产生存储成本。例如,如果您在 4 个区域中生成预构建并保留 2 个版本,则您将被收取最多 8 个预构建的存储费用。请参阅“关于 GitHub Codespaces 的计费”。
-
可选地,添加用户或团队以在为此配置的预构建工作流程运行失败时收到通知。您可以开始键入用户名、团队名称或全名,然后单击名称(一旦出现)即可将其添加到列表中。当预构建失败时,您添加的用户或团队将收到一封电子邮件,其中包含指向工作流程运行日志的链接,以帮助进一步调查。

注意
只有在个人设置中为失败的 Actions 工作流程启用了通知的人员才会收到失败预构建的通知。请参阅“配置通知”。
-
可选地,在页面底部,单击显示高级选项。

在“高级选项”部分,如果您选择禁用预构建优化,如果最新的预构建工作流程失败或当前正在运行,则将创建没有预构建的 Codespace。请参阅“预构建疑难解答”。
-
单击创建。
如果仓库的开发容器配置指定了访问其他仓库的权限,则会显示授权页面。有关如何在
devcontainer.json文件中指定此内容的更多信息,请参阅“管理 Codespace 内对其他仓库的访问权限”。单击以查看请求的权限的详细信息。

点击授权并继续以授予创建预构建所需的权限。或者,您可以点击继续而不授权,但是,如果您这样做,则从生成的预构建创建的 Codespaces 可能无法正常工作。
注意
使用此预构建创建 Codespaces 的用户也将被要求授予这些权限。
创建预构建配置后,它将列在您的仓库设置的 GitHub Codespaces 页面上。一个 GitHub Actions 工作流将被排队然后运行,以根据您选择的 branch 和 dev container 配置文件,在您指定的区域创建预构建。

有关编辑和删除预构建配置的信息,请参阅“管理预构建”。
配置环境变量
要允许预构建过程访问创建开发环境所需的 环境变量,您可以将其设置为 Codespaces 代码仓库密钥或 Codespaces 组织密钥。通过这种方式创建的密钥将可供任何从该代码仓库创建 codespace 的用户访问。请参阅“管理您的代码仓库或组织的开发环境密钥”。
预构建在构建您的环境时无法使用任何用户级密钥,因为这些密钥只有在创建 Codespaces 后才可用。
配置要在预构建中包含的耗时任务
您可以在您的devcontainer.json中使用onCreateCommand和updateContentCommand命令,将耗时进程作为预构建创建的一部分包含在内。请参阅 Visual Studio Code 文档,devcontainer.json 参考。
onCreateCommand仅在创建预构建时运行一次,而updateContentCommand在创建预构建时以及随后更新预构建时运行。增量构建应包含在updateContentCommand中,因为它们代表您的项目的源代码,并且需要包含在每次预构建更新中。
进一步阅读
- “允许预构建访问其他代码仓库”
- “预构建疑难解答”