繁体   English   中英

标记 Docker 镜像 (SemVer)

[英]Tagging Docker image (SemVer)

我需要一点帮助。 标记 docker 图像的最佳选择是什么。 我正在寻找制作 bash 脚本。 这是推荐的还是有任何不同的解决方案? 我想添加一种方法来标记由 jenkins 构建步骤生成的 docker 图像。 我需要自动增加 BuildNumber,但要手动设置 MajorVersion 和 MinorVersion。

我找不到任何与此相关的示例。 您能否提供任何示例来管理我的版本号。

根据我的经验,使用内部版本号标记图像作为图像“版本”的一部分并不是一个很好的做法。 如 SemVer所述,版本号的第三部分是“补丁”,代表一个非破坏性修复。

仅仅添加一个内部版本号作为补丁版本的问题在于,您不一定在每个版本中都代表一个补丁。 例如,假设您正在修复(将作为补丁版本发布)。 但是你没有在第一次提交/推送到你的工作分支时正确地修复。 第一个构建已经是构建号增量,从其他开发人员到其他分支的任何其他推送也是如此。 而这一切都取决于您的 CI 是如何设置的。

如果您需要输入内部版本号,那么您可以使用您的 CI 内部版本号(我认为所有 CI 解决方案都提供)并将它们作为 semver 中的第四个元素添加到您的标签中(例如: 2.4.1-2312 ,其中2312是内部版本号),一旦发布,您就可以将标签提升到2.4.2

如果您想遵守 docker 通常的做法,您还应该将2.4.2标记为2.42latest ,如果您要发布它。

我的最后一个建议是始终使用您正在构建的提交的完整 SHA 标记图像,因为没有更简单的方法将图像与代码库中的某个时间点进行匹配。

只是为已接受的答案添加一点。 根据语义版本规格( https://semver.org/ ),后缀-foo版本xyz-foo被认为是“预发布版”。

构建元数据,例如构建号,应附加在任何预发布版本标签之后作为+build ,例如表示构建 33 使用1.2.3-beta1+331.2.3+33

不幸的是,Docker 标签不能使用+字符! 根据docker tag参考(强调我的):

标签名称必须是有效的 ASCII 并且可以包含小写和大写字母、数字、下划线、句点和破折号 标记名称不能以句点或破折号开头,最多可包含 128 个字符。

因此,请注意,您无法精确地遵循语义版本控制并在 docker 标签中包含构建信息。 这就是人生 ...

我将遵循@gvilarino 的建议并简单地使用破折号-分隔内部版本号,无论是否带有预发布标签。 例如,对于 build 33 1.2.3-beta-331.2.3-33

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM