GitHub Action中GitVersion v6.x提交未递增SemVer预发布号的问题
GitVersion v6.x 预发布号不递增问题解决
那个不变的数字到底是什么
你看到的SemVer预发布段里的1,是GitVersion在unknown分支下生成的预发布阶段序号。因为你当前用的是默认的increment: Inherit配置,GitVersion只会继承上一个已标记版本的规则,不会主动递增这个序号,只会把提交次数加到BuildMetaData里。
为啥预发布号不涨
increment: Inherit的作用是让GitVersion不主动修改版本的递增方向,完全基于最近的基础版本(比如最近的tag)来生成版本,只会把提交次数附加到BuildMetaData,不会动预发布号的序号。- unknown分支是GitVersion对未匹配到main/develop这类预定义分支的默认处理分支,默认配置里没有开启预发布号自动递增的规则。
调整配置让预发布号递增
要让每次提交后预发布号的序号自动涨,修改你的GitVersion.yml配置文件,针对unknown分支做以下调整:
方法1:强制递增预发布号
把unknown分支的increment改成Patch或Minor,同时配置预发布标签和递增模式:
branches: unknown: increment: Patch # 按需选Minor/Patch pre-release-label: ci # 自定义预发布标签,比如ci、dev increment-mode: ContinuousDeployment # 每次提交自动递增预发布号
配置后,SemVer会从1.0.0-ci.1变成1.0.0-ci.2,每次提交都会涨这个序号,BuildMetaData也会正常包含提交信息。
方法2:直接用提交次数作为预发布号
如果想让预发布号直接等于CommitsSinceVersionSource的值,配置pre-release-number-format:
branches: unknown: increment: Inherit pre-release-label: ci pre-release-number-format: '{CommitsSinceVersionSource}'
这种方式下,预发布号会直接显示距离上次版本标签的提交次数,比如1.0.0-ci.5,确保每次提交后的版本都是唯一的。
验证配置是否生效
在GitHub Action里加个步骤打印GitVersion输出,确认效果:
- name: Setup GitVersion id: gitversion uses: GitTools/actions/gitversion/setup@v0.9.15 with: versionSpec: '6.x' - name: Generate version run: dotnet-gitversion /output buildserver
查看输出的SemVer字段,确认预发布号是否随提交递增。
生成唯一NuGet版本号的注意点
- 要保证NuGet版本唯一,要么让预发布号递增,要么把BuildMetaData包含到版本里(NuGet支持带BuildMetaData的版本,比如
1.0.0-ci.1+abc123)。 - 如果用BuildMetaData,打包时要加参数允许,比如
dotnet pack --include-build-number。
内容的提问来源于stack exchange,提问作者pfinferno
相关产品推荐
相关产品推荐

