设置自动化构建

注意

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

配置自动化构建

您可以在 Docker Hub 中配置仓库,使其在每次向源代码提供商推送新代码时自动构建镜像。如果您配置了自动化测试,则只有在测试成功后才会推送新镜像。

  1. Docker Hub 中,转到我的 Hub > 仓库,然后选择一个仓库以查看其详情。

  2. 选择构建选项卡。

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

    注意

    您可能会被重定向到设置页面以关联代码仓库服务。否则,如果您正在编辑现有自动化构建的构建设置,请选择配置自动化构建

  4. 选择要构建 Docker 镜像的源仓库

    注意

    您可能需要指定源代码提供商的组织或用户。选择用户后,源代码仓库将显示在选择仓库下拉列表中。

  5. 可选。启用自动化测试

  6. 查看默认的构建规则

    构建规则控制 Docker Hub 从源代码仓库的内容构建到镜像中的内容,以及如何在 Docker 仓库中标记生成的镜像。

    已为您设置默认构建规则,您可以编辑或删除它。此默认规则设置从源代码仓库中名为 mastermainBranch 进行构建,并创建标记为 latest 的 Docker 镜像。有关更多信息,请参阅设置构建规则

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

  8. 对于每个分支或 tag,启用或禁用自动化构建开关。

    只有启用了自动化构建的分支或 tag 会被构建、测试,并且将生成的镜像推送到仓库。禁用了自动化构建的分支会进行测试构建(如果在仓库级别启用),但构建的 Docker 镜像不会推送到仓库。

  9. 对于每个分支或 tag,启用或禁用构建缓存开关。

    构建缓存可以在您频繁构建大型镜像或有很多依赖项时节省时间。如果希望确保在构建时解析所有依赖项,或者如果有一个在本地构建更快的大层,请禁用构建缓存。

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

    注意

    Webhook 会自动添加到您的源代码仓库中,以便在每次推送时通知 Docker Hub。只有推送至列为一个或多个 tag 源的分支才会触发构建。

设置构建规则

默认情况下,在设置自动化构建时,会为您创建一个基本构建规则。此默认规则监视源代码仓库中 mastermain 分支的变化,并将 mastermain 分支构建成标记为 latest 的 Docker 镜像。

构建规则部分,输入一个或多个要构建的源。

对于每个源

  • 选择源类型以构建 tag 或分支。这告诉构建系统在源代码仓库中查找什么。

  • 输入要构建的分支或 tag 的名称。

    首次配置自动化构建时,会为您设置默认构建规则。此默认设置从源代码中名为 masterBranch 进行构建,并创建标记为 latest 的 Docker 镜像。

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

  • 输入要应用于由此源构建的 Docker 镜像的 tag。

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

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

注意

Docker Hub 从源代码仓库拉取分支时,会执行浅层克隆 - 仅克隆指定分支的尖端。有关更多信息,请参阅自动化构建和自动化测试高级选项

构建的环境变量

配置自动化构建时,可以设置构建过程中使用的环境变量的值。通过选择构建环境变量部分旁边的加号图标,然后输入变量名和值来添加构建环境变量。

从 Docker Hub UI 设置变量值后,您可以在 hooks 文件中设置的命令中使用它们。但是,它们会被存储,只有对 Docker Hub 仓库具有 admin 访问权限的用户才能看到它们的值。这意味着您可以使用它们来存储访问令牌或其他应保密的信息。

注意

在构建配置屏幕上设置的变量仅用于构建过程,不应与服务使用的环境变量混淆,例如用于创建服务链接的变量。

高级自动化构建选项

设置自动化构建至少需要一个由源分支或 tag 以及目标 Docker tag 组成的构建规则。您还可以:

  • 更改构建查找 Dockerfile 的位置
  • 设置构建应使用的文件路径(构建上下文)
  • 设置多个静态 tag 或分支进行构建
  • 使用正则表达式 (regexes) 动态选择要构建的源代码并创建动态 tag

所有这些选项都可在每个仓库的构建配置屏幕上找到。在 Docker Hub 中,选择我的 Hub > 仓库,然后选择要编辑的仓库名称。选择构建选项卡,然后选择配置自动化构建

Tag 和分支构建

您可以配置自动化构建,使其将特定分支或 tag 的推送作为触发构建的条件。

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

  2. 选择源类型以构建 tag 或分支。

    注意

    这告诉构建系统在代码仓库中查找哪种类型的源。

  3. 输入要构建的分支或 tag 的名称。

    注意

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

  4. 输入要应用于由此源构建的 Docker 镜像的 tag。

    注意

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

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

设置构建上下文和 Dockerfile 位置

根据您在源代码仓库中组织文件的方式,构建镜像所需的文件可能不在仓库根目录。如果是这种情况,可以指定构建查找文件的路径。

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

注意

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

您可以指定Dockerfile 位置,作为相对于构建上下文的路径。如果 Dockerfile 位于构建上下文路径的根目录,请将 Dockerfile 路径设置为 /。如果构建上下文字段为空,请从源仓库的根目录设置 Dockerfile 的路径。

正则表达式和自动化构建

您可以指定正则表达式 (regex),以便只构建匹配的分支或 tag。您还可以使用正则表达式的结果来创建应用于构建镜像的 Docker tag。

您最多可以使用九个正则表达式捕获组(或用括号括起来的表达式)来选择要构建的源,并在Docker Tag字段中使用 {\1}{\9} 引用它们。

使用 BuildKit 构建镜像

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

团队自动化构建

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

如果您是所有者,Docker Hub 中的团队仓库也提供这些相同的操作。如果您是具有 write 权限的团队成员,则可以启动、取消和重试团队仓库中的构建,但不能编辑团队仓库设置或删除团队仓库。如果您的用户账户具有 read 权限,或者您是具有 read 权限的团队成员,则可以查看构建配置,包括所有测试设置。

操作/权限读取写入管理员所有者
查看构建详情
启动、取消、重试
编辑构建设置
删除构建

团队自动化构建的服务用户

注意

只有所有者才能为团队设置自动化构建。

为团队设置自动化构建时,您通过与特定用户账户关联的 OAuth 授予 Docker Hub 访问您的源代码仓库的权限。这意味着 Docker Hub 可以访问关联的源提供商账户可以访问的所有内容。

对于组织和团队,建议您创建一个专用的服务账户来授予对源提供商的访问权限。这确保了当个人用户的访问权限发生变化时,构建不会中断,并且个人用户的个人项目不会暴露给整个组织。

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

如果您正在构建包含关联私有子模块(私有依赖项)的仓库,还需要向与账户关联的自动化构建添加覆盖 SSH_PRIVATE 环境变量。有关更多信息,请参阅故障排除

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

  2. 在组织中创建一个“build”团队。

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

    1. 在 GitHub 或 Bitbucket 上,转到仓库的设置页面。

    2. 将新的“build”团队添加到已批准用户列表中。

      • GitHub:在协作者和团队中添加团队。
      • Bitbucket:在访问管理中添加团队。
  4. 将服务用户添加到源提供商上的“build”团队。

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

    注意

    您可能需要退出您在源代码提供商上的个人账户,以便创建到服务账户的链接。

  6. 可选。使用您生成的 SSH 密钥,并利用服务账户和之前的说明来设置包含私有子模块的任何构建。

下一步?

页面选项