Mir*_*rke 2 docker kubernetes dockerfile
我需要一点帮助。标记 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.4
、2
和。latest
我的最后一个建议是始终使用您正在构建的提交的完整 SHA 来标记图像,因为没有更简单的方法将图像与代码库中的时间点进行匹配。
只是为了在已接受的答案中添加一些内容。根据语义版本控制规范(https://semver.org/-foo
),版本中的后缀x.y.z-foo
被视为“预发布版本”。
构建元数据(例如构建号)应附加在任何预发布版本标签之后+build
,如 ,例如表示构建 33 使用1.2.3-beta1+33
或1.2.3+33
。
不幸的是,Docker 标签不能使用该+
字符!根据docker tag
参考文献(强调我的):
标签名称必须是有效的 ASCII,并且可以包含小写和大写字母、数字、下划线、句点和破折号。标签名称不能以句点或破折号开头,并且最多可以包含 128 个字符。
因此,请注意,您无法精确遵循语义版本控制并在 docker 标记中包含构建信息。这就是人生 ...
我将遵循 @gvilarino 的建议,只需使用破折号-
来分隔内部版本号,无论是否带有预发布标签。例如,用于构建33
1.2.3-beta-33
或1.2.3-33
.
归档时间: |
|
查看次数: |
5650 次 |
最近记录: |