设置 Automated Builds

注意

自动化构建需要一个 Docker Pro、Team 或 Business 订阅。

本页包含以下方面的信息:

配置自动生成

您可以在 Docker Hub 中配置存储库,以便它们自动 每次将新代码推送到源提供程序时,都会生成一个镜像。如果您配置了自动测试,则仅推送新镜像 当测试成功时。

  1. Repositories (存储库) 部分中,选择一个存储库以查看其详细信息。

  2. 选择 Builds 选项卡。

  3. 选择 GitHub 或 Bitbucket 以连接镜像源代码的存储位置。

    注意

    您可能会被重定向到设置页面以链接 代码仓库服务。否则,如果您正在编辑构建设置 对于现有的自动生成,请单击 Configure automated builds(配置自动生成)。

  4. 选择要从中构建 Docker 镜像的源存储库

    注意

    您可能需要从 源代码提供程序。选择用户后,源代码 repositories (存储库) 将显示在 Select repository (选择存储库) 下拉列表中。

  5. 可选:启用自动测试

  6. 查看默认的 Build Rules

    构建规则控制 Docker Hub 从内容构建到镜像中的内容 源代码存储库的 在 Docker 存储库中。

    为您设置了默认构建规则,您可以编辑或删除该规则。这 默认规则从源代码存储库中名为 或 的 设置构建,并创建标记有 的 Docker 镜像。有关更多信息,请参阅设置构建规则Branchmastermainlatest

  7. 可选:选择加号图标以添加和配置更多构建规则

  8. 对于每个分支或标签,启用或禁用 Autobuild 切换。

    只有启用了 autobuild 的分支或标签才会被构建、测试,并且具有 生成的镜像推送到存储库。使用 autobuild 的分支 disabled 用于测试目的(如果在存储库中启用 级别),但构建的 Docker 镜像不会推送到存储库。

  9. 对于每个分支或标签,启用或禁用 Build Caching (构建缓存) 开关。

    如果您经常构建大型镜像或具有 许多依赖项。将 build 缓存禁用状态保留为 确保在构建时解决所有依赖项,或者如果 您有一个大层,在本地构建起来更快。

  10. 选择 保存 以保存设置,或选择 保存并生成 以保存并 运行初始测试。

    注意

    Webhook 会自动添加到您的源代码存储库中以通知 每次推送时都部署 Docker Hub。仅推送到列为 source 中,触发构建。

设置构建规则

默认情况下,当您设置 Automated builds (自动生成) 时,会为您创建一个基本构建规则。 此默认规则监视源代码中 or 分支的更改 存储库,并将 or 分支构建到标记有 .mastermainmastermainlatest

Build Rules 部分中,输入要构建的一个或多个源。

对于每个源:

  • 选择 Source type (源类型) 以构建标签或分支。这 告诉构建系统在源代码存储库中查找什么。

  • 输入要生成的 Source 分支或标签的名称。

    首次配置 Automated builds 时,将设置默认构建规则 给你的。此默认设置从源代码中名为 构建,并创建一个标记为 的 Docker 镜像。Branchmasterlatest

    您还可以使用正则表达式选择要构建的源分支或标签。 要了解更多信息,请参阅 regex。

  • 输入要应用于从此源构建的 Docker 镜像的标记。

    如果您配置了正则表达式来选择源,则可以引用 捕获组并将其结果用作标签的一部分。要了解更多信息,请参阅 regex。

  • Dockerfile 位置指定为相对于源代码存储库根目录的路径。如果 Dockerfile 位于存储库根目录,请将此路径设置为 。/

注意

当 Docker Hub 从源代码存储库中提取分支时,它会执行 浅层克隆 - 仅指定分支的尖端。有关更多信息,请参阅 Autobuild 和 Autotest 的高级选项

构建的环境变量

您可以设置构建过程中使用的环境变量的值 配置自动生成时。通过以下方式添加构建环境变量 选择 Build environment variables (构建环境变量) 部分旁边的加号图标,然后 然后输入变量名称和值。

当您从 Docker Hub UI 设置变量值时,您可以通过 在 files 中设置的命令。但是,它们的存储方式是这样,只有有权访问 Docker Hub 存储库的用户才能看到它们的值。这 意味着您可以使用它们来存储访问令牌或其他信息 应该保密。hooksadmin

注意

在 Build Configuration 界面中设置的变量在 构建过程仅进行,不应与环境混淆 值,例如用于创建服务链接。

高级自动化构建选项

您至少需要一个由源分支或标签组成的构建规则,以及 destination Docker 标记来设置自动生成。您还可以:

  • 更改生成查找 Dockerfile 的位置
  • 设置 build 应使用的文件的路径 (build context)
  • 设置多个静态标签或分支以从中构建
  • 使用正则表达式 (regex) 动态选择要构建的源代码,以及 创建动态标签

所有这些选项都可以从 Build configuration (构建配置) 屏幕中获得,用于 每个存储库。从左侧导航栏中选择 Repositories ,然后选择要编辑的存储库的名称。选择 Builds (构建) 选项卡,然后选择 Configure Automated builds (配置自动化构建)。

标记和分支构建

您可以配置自动生成,以便推送到特定分支或标签会触发生成。

  1. Build Rules 部分中,选择加号图标以添加更多要构建的源。

  2. 选择 Source type (源类型) 以构建标签或分支。

    注意

    这会告诉生成系统要在代码中查找哪种类型的源代码 存储 库。

  3. 输入要生成的 Source 分支或标签的名称。

    注意

    您可以输入名称,或使用正则表达式来匹配哪个源分支或标签 要构建的名称。要了解更多信息,请参阅 regex。

  4. 输入要应用于从此源构建的 Docker 镜像的标记。

    注意

    如果您配置了正则表达式来选择源,则可以引用 捕获组并将其结果用作标签的一部分。要了解更多信息,请参阅 regex。

  5. 对您设置的每个新构建规则重复步骤 2 到 4。

设置构建上下文和 Dockerfile 位置

根据您在源代码存储库中排列文件的方式, 构建镜像所需的文件可能不在存储库根目录中。如果那是 在这种情况下,您可以指定内部版本查找文件的路径。

构建上下文是构建所需文件的路径,相对于 存储库的根目录。在 Build context 字段中输入这些文件的路径。输入 将构建上下文设置为源代码存储库的根目录。/

注意

如果您从 Build context 字段中删除默认路径,并将 如果为空,则构建系统将使用 Dockerfile 的路径作为构建 上下文。但是,为避免混淆,建议您指定 完整路径。/

您可以将 Dockerfile 位置指定为相对于构建的路径 上下文。如果 Dockerfile 位于构建上下文路径的根目录下,请将 Dockerfile 路径设置为 .如果 build context 字段为空,则设置 path 添加到源存储库根目录下的 Dockerfile。/

正则表达式和自动构建

您可以指定正则表达式 (regex),以便仅匹配的分支或 标记。您还可以使用正则表达式的结果来创建 Docker 标记。

您最多可以使用 9 个正则表达式捕获组或括在括号中的表达式来选择要构建和引用的源 这些在 Docker Tag 字段中使用 through 。{\1}{\9}

使用 BuildKit 构建镜像

Autobuilds 默认使用 BuildKit 构建系统。如果您想使用旧版 Docker 构建系统,添加环境变量 .有关 BuildKit 的更多信息,请参阅 BuildKit 页面。DOCKER_BUILDKIT=0

团队的 Autobuild

当您在自己的用户账户中创建自动生成存储库时,您可以 可以启动、取消和重试构建,以及编辑和删除您自己的存储库。

如果满足以下条件,则 Docker Hub 中的团队仓库也可以使用这些相同的操作 您是所有者。如果您是 团队,该团队具有您可以在 团队的仓库,但您无法编辑 Team 仓库设置或删除 团队存储库。如果您的用户帐户具有权限,或者您是 具有权限的团队成员,您可以查看构建配置 包括任何测试设置。writereadread

操作/权限管理所有者
查看构建详细信息xxxx
开始、取消、重试xxx
编辑构建设置xx
删除内部版本x

团队自动生成的服务用户

注意

只有所有者才能为团队设置 Automated Builds。

当您为团队设置自动生成时,您授予 Docker Hub 对 使用绑定到特定用户帐户的 OAuth 的源代码存储库。这 意味着 Docker Hub 可以访问链接的源提供程序 帐户可以访问。

对于组织和团队,建议您创建一个专用服务账户以授予对源提供商的访问权限。这确保了没有 build 会随着单个用户的访问权限更改而中断,并且 单个用户的个人项目不会向整个组织公开。

此服务帐户应有权访问要构建的任何存储库, 并且必须具有对源代码存储库的管理访问权限,以便它可以 管理部署密钥。如果需要,您可以将此帐户限制为仅特定的 特定版本所需的存储库集。

如果您正在使用链接的私有子模块(私有 dependencies),您还需要添加 override environment 变量添加到与账户关联的自动生成。有关详细信息,请参阅疑难解答SSH_PRIVATE

  1. 在源提供商上创建服务用户账户,并为其生成 SSH 密钥。

  2. 在您的组织中创建 “build” 团队。

  3. 确保新的 “build” 团队有权访问您需要构建的每个仓库和子模块。

    转到存储库的 Settings (设置) 页面。在 GitHub 上,添加新的 “build” 团队 添加到协作者和团队列表中。在 Bitbucket 上,添加“构建”团队 拖动到 Access management (访问管理) 屏幕上的已批准用户列表。

  4. 将服务用户添加到源提供商的 “build” 团队。

  5. 以所有者身份登录 Docker Hub,切换到组织,然后按照说明使用服务帐户链接到源代码存储库

    注意

    您可能需要注销源代码提供商的个人帐户,才能创建指向服务帐户的链接。

  6. 可选:使用您生成的 SSH 密钥,通过服务账户和上述说明设置具有私有子模块的任何构建。

下一步是什么?