VSTS / Azure Devops自动增量软件包版本

时间:2018-09-13 11:21:54

标签: azure-devops azure-pipelines azure-pipelines-build-task azure-artifacts

运行.Net核心任务进行打包。如何将输出的nuget软件包版本本身转换为Auto Increment,格式为:

1.0.0

所以下一次我打包/推送时我想看1.0.1

我正在使用带有Build.BuildNumber的环境构建变量,并在:时刻获取输出。

20180913-.2.0等。想改成更传统的版本控制系统

谢谢。

4 个答案:

答案 0 :(得分:9)

也许我已经弄清楚了。

对于任何将头发扯掉的人,请尝试以下操作:

打包任务:

自动软件包版本控制:使用环境变量

环境变量:Build.BuildNumber

然后在顶部菜单中找到“任务/变量/触发器/选项”,然后单击“选项”。

内部编号格式:1.0 $(Rev:.r)

保存并排队。 (将产生1.0.1)

享受!

如果我错了任何人,或者长期不能使用,请纠正我。

答案 1 :(得分:5)

docs中,变量Rev:.r每日构建修订计数。接受的“解决方案”将导致一天的1.0.12版本结束,然后第二天为1.0.1

如果您想要一个简单的增量且唯一的服务器,请使用1.0.$(BuildID)

$(BuildID)是构建的内部不可变计数器,因此比$(BuildNumber)更加干净。

更新

BuildID将始终递增-无需重置。 因此,经过一小段颠簸之后,您最终会说1.2.123成为1.3.124

如果您想很好地执行此任务,则可以使用npm version或类似工具(例如pubspec_version)进行Dart或Flutter构建。

- script: npm version $RELEASE_TYPE

其中$RELEASE_TYPE是一个变量,您可以根据构建(即CI,PR等)进行设置,其值分别为majorminorpatch,{ {1}}等。

prerelease

答案 2 :(得分:4)

如果您只是想更改主要版本,次要版本或修订版本号,则在变量中使用counter运算符是一种简单而优雅的方法。它将自动为当前值加一个。

这是我使用的:

variables:
  major: '1'
  minor: '0'
  revision: $[counter(variables['minor'], 1)] #this will get reset when minor gets bumped. The number after Counter is the seed number (in my case, I started at 1).
  app_version: '$(major).$(minor).$(revision)'

如果您希望看到使用此功能的真实4作业管道,我在这里https://github.com/LanceMcCarthy/DevReachCompanion/blob/master/azure-pipelines.yml

答案 3 :(得分:0)

对我来说,将“选项”标签上的内部版本号格式设置为

$(date:yyyy).$(date:MMdd)$(rev:.r) 

并添加下一个构建参数:

/p:Version=1.$(Build.BuildNumber) /p:AssemblyVersion=1.$(Build.BuildNumber)

在这种情况下,我们将手动管理主要版本,但是次要版本和内部版本号将自动设置。易于理解您已部署的版本。