43

在 Docker Hub 上指定自动构建时,我可以设置一些设置(Type('Branch' 或 'Tag')NameDockerfile LocationDocker Tag Name)。但不幸的是,我没有找到任何文档。

我假设,当我选择Type'Branch' 并输入 aName时,这是我在 GitHub/BitBucket 上的 git 存储库中使用的分支,这会Docker Tag Name导致将标签分配给创建的图像。

我玩了一下它,发现了一些我不清楚的东西 - 但我希望你能向我解释。

  • 添加多个条目会导致仅分配一个标签。我在第一个中使用了'Branch','master'和'/'和'latest',Docker Tag Name在第二个中使用了'v1'。但只有“v1”用作标签。

  • 使用Type“标签”并没有产生不同的结果。我认为这可能只会在 git commit 被标记为这个值的情况下构建一个图像。这种类型是干什么用的?

我一直在寻找将标签“最新”分配给最新版本的能力,并为旧版本使用 v1、v2、v3 等方案,就像我在本地构建图像时可以做的那样。

4

7 回答 7

49

dockerhub 上提供了自动 docker 图像标记!我最近摆弄了这个,想分享我的发现,跳上这个线程(希望没关系!)

所以我在 dockerhub 上有一个带有自动构建链接的公共 GitHub 存储库。我希望:latest每次推送到master分支时都更新标签。此外,我希望为我在 GitHub 上创建的每个版本创建:X,:X.Y和标签(标记为在 GitHub 上)。:X.Y.ZvX.Y.Z

以下是构建设置配置如何支持这一点: dockerhub 构建设置

在文本中,因此更容易复制粘贴:

| Type   | Name                              | Dockerfile Location | Docker Tag Name |
|--------|-----------------------------------|---------------------|-----------------|
| Branch | master                            | /                   | latest          |
| Tag    | /^v([0-9]+)\.([0-9]+)\.([0-9]+)$/ | /                   | {\1}            |
| Tag    | /^v([0-9]+)\.([0-9]+)\.([0-9]+)$/ | /                   | {\1}.{\2}       |
| Tag    | /^v([0-9]+)\.([0-9]+)\.([0-9]+)$/ | /                   | {\1}.{\2}.{\3}  |

希望这可以帮助!

于 2017-06-28T08:03:11.230 回答
17

这非常简单,只需 2 个步骤......

第 1 步 - 单击自动构建链接

自动构建链接

第 2 步 - 通过单击蓝色加号按钮将多个自动构建添加到同一个 docker repo(大多数人不知道您可以添加多个自动构建)(见下图)

添加多个自动构建

在上图中的示例中,我是...

  • 添加映射到 github master 分支的“最新”docker 标签
  • 添加映射到 github 0.1.0 标记的“0.1.0”泊坞窗标记

注意github标签必须存在!

现在,当我单击保存并触发构建时,启动了 2 个构建,一个用于最新标签,一个用于 0.1.0 标签。

当你知道怎么做时很简单:)我想我会在这里提供一个完整的答案,因为这没有很好的记录。

于 2015-07-21T11:55:41.417 回答
7

对于新的 Docker Hub 自动构建,Anton Drukh 的出色答案可以通过一条规则来实现

来源类型:标签

资源:/^v([0-9.])\.([0-9.])\.([0-9.])$/

码头工人标签:release-{\1},release-{\1}.{\2},release-{\1}.{\2}.{\3},latest

请注意,这与安东的回答略有不同,因为我是从标签而不是主提交构建最新的。

于 2019-01-05T15:51:54.153 回答
4

几个月前,我联系了 docker 支持以明确提供版本号,当时不支持。

您在 docker hub 上指定的是要监视的 git 标签/分支。构建的结果将始终被标记latest

于 2014-08-15T16:50:21.217 回答
4

Usman 在https://stackoverflow.com/a/26107743/155689中回答了类似问题的解决方法

基本上

  • 进入自动构建设置,
  • 使用标签添加另一种构建类型
  • 输入一个 git 标签名称
  • 并给它一个版本名称
  • 点击保存并触发构建

正如你所看到的,我已经为这个自动化构建做了这个

于 2015-03-10T17:58:47.203 回答
3

我将标签“最新”分配给最新版本的解决方案是在自动构建中使用以下配置:

| Type   | Name   | Dockerfile Location | Tag Name |
| Branch | master |        /            | latest   |

每当 master 中有提交时,就会创建一个带有“latest”标签的新构建。

前几天有一个问题,自动构建使用分支名称作为标签名称,因此您可能会发现几个带有“master”的构建。这是固定的:https ://forums.docker.com/t/automated-builds-not-tagging-latest/683

于 2015-01-26T14:25:20.477 回答
2

我还没有使用这个功能,所以我可能是错的,但是今天当我转到build settings选项卡并选择tag第二种类型的构建时,它会自动具有/.*/将选择所有标签的正则表达式。

我会在测试后立即更新它。

于 2016-03-10T22:11:57.043 回答