我试图弄清楚如何使用 GitVersion 生成与 docker 兼容的构建 id,默认情况下 gitversion 使用如下内容:
0.1.0-branchname.1+380
但+
不能在图像标签名称中使用。我在 GitVersion 文档下发现的唯一合理的东西是NuGetVersionV2
变量,它似乎替换+
为-
,但我想知道如何更好地控制 gitversion 如何为提交生成“偏移量”
我试图弄清楚如何使用 GitVersion 生成与 docker 兼容的构建 id,默认情况下 gitversion 使用如下内容:
0.1.0-branchname.1+380
但+
不能在图像标签名称中使用。我在 GitVersion 文档下发现的唯一合理的东西是NuGetVersionV2
变量,它似乎替换+
为-
,但我想知道如何更好地控制 gitversion 如何为提交生成“偏移量”
对于GitVersion 任务,无论使用 Microsoft 托管还是自托管代理,它都会根据测试结果计算当前分支的所有提交,而不是基于以前的构建或缓存。
GitVersion 任务导出其他变量,所以我建议您可以使用其他变量作为 docker 图像标签而不是 BuildId。
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.Major;]0
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.Minor;]1
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.Patch;]0
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.PreReleaseTag;]
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.PreReleaseTagWithDash;]
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.PreReleaseLabel;]
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.PreReleaseNumber;]
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.BuildMetaData;]17
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.BuildMetaDataPadded;]0017
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.FullBuildMetaData;]17.Branch.master.Sha.4515221c0e10f3bf3fa4038b9b25e2379080ddf1
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.MajorMinorPatch;]0.1.0
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.SemVer;]0.1.0
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.LegacySemVer;]0.1.0
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.LegacySemVerPadded;]0.1.0
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.AssemblySemVer;]0.1.0.0
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.AssemblySemFileVer;]0.1.0.0
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.FullSemVer;]0.1.0+17
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.InformationalVersion;]0.1.0+17.Branch.master.Sha.4515221c0e10f3bf3fa4038b9b25e2379080ddf1
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.BranchName;]master
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.Sha;]4515221c0e10f3bf3fa4038b9b25e2379080ddf1
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.ShortSha;]4515221
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.NuGetVersionV2;]0.1.0
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.NuGetVersion;]0.1.0
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.NuGetPreReleaseTagV2;]
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.NuGetPreReleaseTag;]
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.CommitsSinceVersionSource;]17
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.CommitsSinceVersionSourcePadded;]0017
##[debug]Processed: ##vso[task.setvariable variable=GitVersion.CommitDate;]2019-07-10
您还可以在 GitVersion.yml 中自定义格式。例如:
mode: ContinuousDelivery
assembly-informational-format: '{SemVer}-{ShortSha}'
branches: {}
ignore:
sha: []
然后,在 Docker 任务(Tags 输入框)中使用$(Gitversion.Informationalversion) (sample data:0.1.0-0322edb)
这就是我最终做的事情:
mode: ContinuousDeployment
assembly-informational-format: '{Major}.{Minor}.{Patch}-{PreReleaseLabel}-{ShortSha}'
branches: {}
ignore:
sha: []
结合这个:
- pwsh: Write-Host "##vso[build.updatebuildnumber]${env:GITVERSION_INFORMATIONALVERSION}"