Docker Hub自动构建 - 标记

问题描述 投票:35回答:7

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

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

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

  • 添加多个条目会导致只分配一个标记。我使用'Branch','master'和'/'以及'latest'作为第一个中的Docker Tag Name,第二个中使用'v1'。但只有'v1'用作标签。
  • 使用Type'Tag'不会导致不同的结果。我认为如果用这个值标记git commit,这可能只会构建一个图像。这种类型是什么?

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

docker dockerhub
7个回答
33
投票

dockerhub上提供自动码头图像标记功能!我最近摆弄这个想要分享我的发现,跳过这个主题(希望没关系!)

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

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

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

| 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}  |

希望这可以帮助!


16
投票

这在2个步骤中非常容易......

第1步 - 单击Automated Build链接

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

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

  • 添加一个映射到github主分支的“最新”docker标记
  • 添加“0.1.0”docker标记,映射到github 0.1.0标记

请注意,github标记必须存在!

现在,当我单击“保存”并触发构建2构建时,一个用于最新标记,另一个用于0.1.0标记。

很简单,当你知道如何:)我想在这里提供一个完整的答案,因为这是很难记录。


4
投票

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

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


4
投票

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

基本上

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

如你所见,我为this automated build做了这个


3
投票

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

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

只要master中有提交,就会创建一个标记为“latest”的新构建。

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


3
投票

对于新的Docker Hub自动构建Anton Drukh的优秀答案可以通过一个规则来实现

来源类型:标签

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

Docker标签:release-{\1},release-{\1}.{\2},release-{\1}.{\2}.{\3},latest

请注意,这与Anton的答案略有不同,因为我正在构建最新的标记而不是主提交。


2
投票

我还没有使用过这个功能,所以我错了,但今天当我去build settings标签并选择tag进行第二种类型的构建时,它会自动拥有正则表达式/.*/,它将选择所有标签。

我会在测试后立即更新。

© www.soinside.com 2019 - 2024. All rights reserved.