VSTS/Azure Devops自动增量包版本

The*_*hud 7 azure-devops azure-pipelines-build-task azure-pipelines azure-artifacts

运行.Net核心任务到打包.如何将输出的nuget包版本提供给Auto Increment本身,格式为:

1.0.0

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

我正在使用Build.BuildNumber的环境构建变量并在以下时刻获取输出:

20180913-.2.0等想要纠正更传统的版本控制系统

谢谢.

The*_*hud 17

也许我已经弄清楚了.

对于任何撕掉头发的人试试这个:

包装任务:

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

环境变量:Build.BuildNumber

然后在顶部菜单中,您有任务/变量/触发器/选项,单击选项.

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

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

请享用!

如果我错了,或者如果这不能长期运作,请纠正我.

  • 我在这件事上的经验是,如果您的解决方案/构建定义包含多个包,即使您更改了一个,您也基本上会强制所有包都更改版本。所以从长远来看,这不会是好事。 (2认同)

gre*_*ott 16

在docs中,该变量Rev:.r是每日内部版本修订计数。公认的“解决方案”将导致一天的完成版本为1.0.12,然后第二天为1.0.1。

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

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


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

如果您想很好地执行此任务,则可以使用npm版本或类似版本(例如Dart或Flutter构建的pubspec_version)来完成。

- script: npm version $RELEASE_TYPE
Run Code Online (Sandbox Code Playgroud)

其中$RELEASE_TYPE是变量您可以设置基于构建(即:CI,PR等),具有值major,minor,patch,prerelease等。

- script: npm version $RELEASE_TYPE
  condition: startsWith(variables['build.sourceBranch'], 'refs/head/release/')
  env:  
    releaseType: minor
Run Code Online (Sandbox Code Playgroud)

更新:Bump Repo版本和在Build中使用(使用npm)

为了更新仓库版本,我最终将npm version作为DevDependency 包含在内,它具有precommit钩子,可在任何提交时增加项目版本。

该技术可以应用于其他项目类型,并将它们放在子文件夹中-尽管可能导致服务器OS要求复杂化。

要在构建中使用此版本,请添加以下bash脚本task,该任务将版本获取并导出为任务变量:

v=`node -p "const p = require('./package.json'); p.version;"`
echo "##vso[task.setvariable variable=packageVersion]$v"
Run Code Online (Sandbox Code Playgroud)

.Net Core Task Only版本

不幸的是,没有回购暴动。

解决方法1:
jobs:
  - job: versionJob #reads version number from the source file
    steps:
      - powershell: |
          $fv = Get-Content versionFile
          Write-Host ("##vso[task.setvariable variable=versionFromFile;isOutput=true]$fv")
        displayName: 'version from file' 
        name: setVersionStep  


  - job: buildJob # consumes version number, calculates incremental number and set version using assemblyinfo.cs
    dependsOn: versionJob
    variables:
      versionFromFile: $[ dependencies.versionJob.outputs['setVersionStep.versionFromFile'] ] # please note that spaces required between $[ and dependencies
      buildIncrementalNumber: $[ counter(dependencies.versionJob.outputs['setVersionStep.versionFromFile'],1) ] #can't use $versionFromFile here


    steps:
      - powershell: |
          Write-Host ($env:versionFromFile)
          Write-Host ($env:versionFromFile + '.' + $env:buildIncrementalNumber)
        displayName: 'version from file output' 
Run Code Online (Sandbox Code Playgroud) 解决方法2:

这篇文章介绍了其他一些版本,使用版本前缀并自动将BuildNumber作为版本后缀应用。


Lan*_*thy 9

如果您只是想更改主要版本号、次要版本号或修订版本号,那么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)'
Run Code Online (Sandbox Code Playgroud)

如果您想查看使用此功能的真实 4 作业管道,我这里有一个https://github.com/LanceMcCarthy/DevReachCompanion/blob/master/azure-pipelines.yml