如何使用GitVersion生成兼容Docker的镜像Tag并控制提交偏移量
解决GitVersion生成Docker兼容构建ID并灵活控制偏移量的问题
我太懂你这个需求了——Docker镜像标签对字符限制挺严的,默认GitVersion带+的格式确实没法直接用,NuGetVersionV2虽然能解决符号问题,但要是想更灵活控制偏移量的展示方式,咱们可以用自定义模板来实现完全自定义的格式。
先说说快速解决(NuGetVersionV2方案)
如果你只是想快速替换掉+号,用GitVersion内置的NuGetVersionV2变量确实是最省事的:
- 默认生成的格式是
0.1.0-branchname.1+380 - 使用
NuGetVersionV2后会变成0.1.0-branchname.1-380,直接把+替换成了Docker允许的- - 你可以通过命令行直接获取这个值:
gitversion /showvariable NuGetVersionV2
但如果想要更灵活地控制偏移量(就是那个380)的位置、前后分隔符,甚至和其他字段组合,自定义模板才是最优解。
自定义模板:完全掌控偏移量和格式
GitVersion支持通过配置文件(GitVersion.yml)定义自己的输出模板,你可以自由组合Major、Minor、Patch、BranchName、CommitsSinceVersionSource(就是你说的偏移量)、ShortSha等变量,完全适配Docker的标签规则。
示例配置
在项目根目录创建或修改GitVersion.yml,添加自定义模板:
mode: Mainline tag-prefix: '[vV]' assembly-versioning-scheme: MajorMinorPatch next-version: 0.1.0 custom-templates: # 这里定义你想要的Docker标签格式,按需调整变量和分隔符 docker-tag: '{Major}.{Minor}.{Patch}-{BranchName}.{CommitsSinceVersionSource}-{ShortSha}'
生成自定义标签
配置好后,用命令行获取这个自定义模板的值:
gitversion /showvariable docker-tag
生成的结果大概是这样的:0.1.0-main.380-a1b2c3d,完全符合Docker的标签要求,而且偏移量380的位置和前后的分隔符都由你说了算。
灵活调整格式
如果你不需要分支名或者短哈希,直接修改模板就行:
- 简化版(只保留版本+偏移量):
docker-tag: '{Major}.{Minor}.{Patch}-{CommitsSinceVersionSource}' - 带环境标识的版本:
docker-tag: '{Major}.{Minor}.{Patch}-{BranchName}-build.{CommitsSinceVersionSource}'
总之,只要是GitVersion支持的变量,你都可以随意组合,完全满足你的个性化需求。
内容的提问来源于stack exchange,提问作者4c74356b41
相关产品推荐
相关产品推荐

