GitVersion 6.0.x master分支PreReleaseLabel为空,版本标签失效
升级至GitVersion 6.0.x后,master分支版本号生成不符合预期:期望master构建版本带-alpha标签,仅打标签的构建使用next-version字段的精确版本,但当前master分支输出的PreReleaseLabel为空,版本格式为6.4.0-48990,而非5.x时期的6.4.0-alpha.13161。
当前配置(gitversion.yml)
# current development version which is first version of next release branched away from master next-version: 6.4.0 # configuration for all branches tag-prefix: '[vV]?' assembly-versioning-scheme: MajorMinorPatchTag assembly-file-versioning-scheme: MajorMinorPatchTag mode: ContinuousDelivery commit-message-incrementing: Enabled branches: master: label: '-alpha' regex: ^master$|^main$ is-main-branch: true feature: mode: ContinuousDelivery regex: ^workitems?[/-](?<BranchName>.+) label: '--w.{BranchName}' source-branches: ['master'] pre-release-weight: 0 pull-request: regex: (pull|pull\-requests|pr)[/-] label: -pr source-branches: ['master'] # Official product releases release: regex: releases/[Vv] label: beta # Increment patch version after a release increment: Patch source-branches: ['master']
当前master分支输出
{ "AssemblySemFileVer": "6.4.0.48990", "AssemblySemVer": "6.4.0.48990", "BranchName": "master", "BuildMetaData": null, "CommitDate": "2024-11-05", "CommitsSinceVersionSource": 48990, "EscapedBranchName": "master", "FullBuildMetaData": "Branch.master.Sha.3edf09c0a1683a97b79b2380bXXXX", "FullSemVer": "6.4.0-48990", "InformationalVersion": "6.4.0-48990+Branch.master.Sha.3edf09c0a1683a97b79b2380b5XXX", "Major": 6, "MajorMinorPatch": "6.4.0", "Minor": 4, "Patch": 0, "PreReleaseLabel": "", "PreReleaseLabelWithDash": "", "PreReleaseNumber": 48990, "PreReleaseTag": "48990", "PreReleaseTagWithDash": "-48990", "SemVer": "6.4.0-48990", "Sha": "3edf09c0a1683a97b79b2380b5cdacXXXXXX", "ShortSha": "3edf09c", "UncommittedChanges": 1, "VersionSourceSha": "", "WeightedPreReleaseNumber": 103990 }
GitVersion 5.x正常输出
{ "Major":6, "Minor":4, "Patch":0, "PreReleaseTag":"alpha.13161", "PreReleaseTagWithDash":"-alpha.13161", "PreReleaseLabel":"alpha", "PreReleaseNumber":13161, "WeightedPreReleaseNumber":68161, "BuildMetaData":"", "BuildMetaDataPadded":"", "FullBuildMetaData":"Branch.master.Sha.2acac930ea679651600c0ab55cXXXXXXX", "MajorMinorPatch":"6.4.0", "SemVer":"6.4.0-alpha.13161", "LegacySemVer":"6.4.0-alpha13161", "LegacySemVerPadded":"6.4.0-alpha0013161", "AssemblySemVer":"6.4.0.13161", "AssemblySemFileVer":"6.4.0.13161", "FullSemVer":"6.4.0-alpha.13161", "InformationalVersion":"6.4.0-alpha.13161+Branch.master.Sha.2acac930ea679651600c0ab55c5XXXXXXXX", "BranchName":"master", "Sha":"2acac930ea679651600c0ab55c53bXXXXXXXXXX", "ShortSha":"2acac93", "NuGetVersionV2":"6.4.0-alpha0013161", "NuGetVersion":"6.4.0-alpha0013161", "NuGetPreReleaseTagV2":"alpha13161", "NuGetPreReleaseTag":"alpha13161", "VersionSourceSha":"16f71543433b202773b49d6d5a7dbXXXXXXXXX", "CommitsSinceVersionSource":13161, "CommitsSinceVersionSourcePadded":"0013161", "CommitDate":"2024-10-24" }
旧配置(GitVersion 5.x)相关部分
# current development version which is first version of next release branched away from master next-version: 6.4.0 # configuration for all branches assembly-versioning-scheme: MajorMinorPatchTag assembly-file-versioning-scheme: MajorMinorPatchTag mode: ContinuousDeployment legacy-semver-padding: 7 build-metadata-padding: 7 commits-since-version-source-padding: 7 commit-message-incrementing: Disabled branches: master: regex: ^master$|^main$ tag: alpha feature: regex: workitems?[/-] tag: --w.{BranchName} source-branches: ['master']
解决方案:调整GitVersion 6.x配置以匹配5.x逻辑
GitVersion 6.x对分支模式和预发布标签的处理逻辑有变更,需调整以下配置项:
修改后的完整配置(gitversion.yml)
# current development version which is first version of next release branched away from master next-version: 6.4.0 # configuration for all branches tag-prefix: '[vV]?' assembly-versioning-scheme: MajorMinorPatchTag assembly-file-versioning-scheme: MajorMinorPatchTag mode: ContinuousDeployment legacy-semver-padding: 7 build-metadata-padding: 7 commits-since-version-source-padding: 7 commit-message-incrementing: Disabled branches: master: label: alpha regex: ^master$|^main$ is-main-branch: true increment: None feature: mode: ContinuousDeployment regex: ^workitems?[/-](?<BranchName>.+) label: 'w-{BranchName}' source-branches: ['master'] pre-release-weight: 0 pull-request: regex: (pull|pull\-requests|pr)[/-] label: pr source-branches: ['master'] # Official product releases release: regex: releases/[Vv] label: beta increment: Patch source-branches: ['master']
关键修改点说明
全局模式切换为ContinuousDeployment:
GitVersion 6.x中,ContinuousDelivery模式默认不会为主分支添加预发布标签,仅显示提交数;而ContinuousDeployment模式会自动生成带标签的预发布版本,和5.x行为一致。master分支配置调整:
- 将
label: '-alpha'改为label: alpha:6.x中label字段无需带前置短横线,GitVersion会自动添加短横线拼接预发布标签。 - 添加
increment: None:指定主分支不自动增量版本,仅使用next-version定义的版本号,对齐5.x逻辑。
- 将
恢复padding配置:
添加legacy-semver-padding、build-metadata-padding、commits-since-version-source-padding,确保版本号中提交数的补零格式和5.x一致。调整commit-message-incrementing为Disabled:
和旧配置保持一致,避免提交消息中的增量指令触发版本号变更,仅依赖分支规则和next-version。feature分支label格式修正:
将label: '--w.{BranchName}'改为label: 'w-{BranchName}',6.x中变量引用需用{BranchName},且无需重复短横线,GitVersion会自动处理拼接逻辑。
验证效果
修改后,master分支的版本输出将恢复为6.4.0-alpha.XXXXXX格式,PreReleaseLabel为alpha,PreReleaseTag为alpha.XXXXXX,和GitVersion 5.x的输出完全一致。
内容的提问来源于stack exchange,提问作者PMF

