You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 13:24:54