在Docker Hub上指定自动构建时,我可以设置一些设置(Type
('Branch'或'Tag'),Name
,Dockerfile Location
和Docker Tag Name
)。但不幸的是,我没有找到任何文件。
我假设,当我选择Type
'Cranch'并输入Name
时,这是我使用的GitHub / BitBucket上的git存储库的分支,并且Docker Tag Name
导致将标记分配给创建的图像。
我玩了一下,发现了一些我不清楚的事情 - 但我希望你能向我解释一下。
Docker Tag Name
,第二个中使用'v1'。但只有'v1'用作标签。Type
'Tag'不会导致不同的结果。我认为如果用这个值标记git commit,这可能只会构建一个图像。这种类型是什么?我一直在寻找能够将标签“最新”分配给最新版本的能力,并使用像v1,v2,v3等方案来进行旧版本的构建,就像我在本地构建图像时所做的那样。
dockerhub上提供自动码头图像标记功能!我最近摆弄这个想要分享我的发现,跳过这个主题(希望没关系!)
所以我在dockerhub上有一个带有自动构建链接的公共GitHub仓库。我希望每次推送到:latest
分支时都会更新master
标签。此外,我希望为我在GitHub上创建的每个版本创建:X
,:X.Y
和:X.Y.Z
标记(在GitHub上标记为vX.Y.Z
)。
在文本中,复制粘贴更容易:
| 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} |
希望这可以帮助!
这在2个步骤中非常容易......
第1步 - 单击Automated Build链接
第2步 - 通过单击BLUE PLUS BUTTON将多个自动构建添加到同一个docker repo(大多数人不知道您可以添加多个自动构建)(参见下图)
在上图中的示例中,我...
请注意,github标记必须存在!
现在,当我单击“保存”并触发构建2构建时,一个用于最新标记,另一个用于0.1.0标记。
很简单,当你知道如何:)我想在这里提供一个完整的答案,因为这是很难记录。
几个月前,我联系了docker支持,明确提供版本号,当时不支持。
您在docker hub上指定的是将要监视的git标记/分支。构建的结果将始终标记为latest
。
乌斯曼在https://stackoverflow.com/a/26107743/155689回答了类似问题的解决方法
基本上
如你所见,我为this automated build做了这个
我将标记“latest”分配给最新版本的解决方案是在自动构建中使用以下配置:
| Type | Name | Dockerfile Location | Tag Name |
| Branch | master | / | latest |
只要master中有提交,就会创建一个标记为“latest”的新构建。
几天前出现了一个问题,即自动构建使用分支名称作为标记名称,因此您可能会发现一些带有“master”的构建。这是固定的:https://forums.docker.com/t/automated-builds-not-tagging-latest/683
对于新的Docker Hub自动构建Anton Drukh的优秀答案可以通过一个规则来实现
来源类型:标签
资料来源:/^v([0-9.])\.([0-9.])\.([0-9.])$/
Docker标签:release-{\1},release-{\1}.{\2},release-{\1}.{\2}.{\3},latest
请注意,这与Anton的答案略有不同,因为我正在构建最新的标记而不是主提交。
我还没有使用过这个功能,所以我错了,但今天当我去build settings
标签并选择tag
进行第二种类型的构建时,它会自动拥有正则表达式/.*/
,它将选择所有标签。
我会在测试后立即更新。