Из документов переменная Rev:.r
представляет собой счетчик изменений daily build.Принятое «решение» приведет к тому, что в один день будет получена версия 1.0.12
, а на следующий день будет 1.0.1
.
Если вы хотите простой инкремент и уникальный semver, используйте 1.0.$(BuildID)
.
$(BuildID)
- внутренний неизменяемый счетчик для ваших сборок, и поэтому он чище, чем $(BuildNumber)
.
BuildID всегда будет увеличиваться - нетсброс.Таким образом, после небольшого удара вы в конечном итоге скажете, что 1.2.123
становится 1.3.124
.
Если вы хотите хорошо выполнить эту задачу, это можно сделать с помощью npm версия илианалогично, например, pubspec_version для сборок Dart или Flutter.
- script: npm version $RELEASE_TYPE
, где $RELEASE_TYPE
- это переменная, которую вы можете установить на основе сборки (то есть: CI, PR и т. д.), имеющаязначение major
, minor
, patch
, prerelease
и т. д.
- script: npm version $RELEASE_TYPE
condition: startsWith(variables['build.sourceBranch'], 'refs/head/release/')
env:
releaseType: minor
Обновление: Bump Repo Version и использование в сборке (с использованием npm)
Чтобы обновить версию репо, я включил npm версию в качестве DevDependency, с его ловушкой precommit для повышения версии проекта при любом коммите.
Этот метод может быть применен к другому проектутипы, помещая их в подпапку - хотя это может привести к сложностям с требованиями ОС сервера.
Чтобы использовать эту версию в вашей сборке, добавьте эту задачу bash script , которая получает и экспортирует версиюв качестве переменной задачи:
v=`node -p "const p = require('./package.json'); p.version;"`
echo "##vso[task.setvariable variable=packageVersion]$v"
.Net Core Task только version
К сожалению, нет репо-удара.
Обходное решение 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'
Обходное решение 2:
В этом посте описывается пара других, использующих version-prefix и автоматическое применение BuildNumber в качестве версии-суффикса .