Увеличение значения переменной в TFS build +1

У меня есть Microsoft Visual Studio Team Foundation Server (версия 15.117.26714.0) с предопределенной переменной $(ProjectBuildNumber).

Есть ли способ увеличить в процессе сборки значение переменной с младшим номером сборки на +1?

$(ProjectBuildNumber)  =   663

Итак, что при следующей сборке это будет:

$(ProjectBuildNumber)  =   664

3 ответа

Решение

Вы не можете ссылаться на переменные в номере сборки определения сборки. Но вы можете переопределить номер сборки в самой сборке. Вы можете использовать команду волшебного журнала или мою задачу VSTS Variables, чтобы установить Build.BuildNumber в самой сборке. Задача "Переменные" расширяет ссылки на переменные. Возможно, вы могли бы просто установить текущее значение, чтобы расширить его.

Чтобы самостоятельно выполнить команду log, используйте пакетный скрипт, PowerShell или bash, чтобы вывести на консоль следующую конкретную строку:

## vso [build.updatebuildnumber] номер сборки

Обновите номер сборки для текущей сборки. Пример:

##vso[build.updatebuildnumber]my-new-build-number

Минимальная версия агента: 1.88

источник: https://github.com/Microsoft/vsts-tasks/blob/master/docs/authoring/commands.md

Альтернативный вариант - использовать параметр $(Rev):

Build.BuildNumber = 1.1.$(Rev:.r)  

Это будет автоматически увеличивать переменную при каждом запуске сборки.

Чтобы обновить переменную в определении сборки, используйте еще одно расширение:

Эти вещи вместе должны быть в состоянии получить то, что вы хотите.

В разделе переменных

установите значение ProjectBuildNumber равным $[counter('', 663)].

Это поставит в очередь сборку, начиная с 663 как ProjectBuildNumber и увеличивая на 1 для последующей очереди сборок.

К сожалению, функция счетчика ( Expressions) недоступна в TFS 2018. В этой старой версии лучшим решением для меня является использование сценария PowerShell в качестве первой задачи сборки. Вы можете иметь свой параметр

$(номер_проекта_сборки)

в качестве входного аргумента и поместите этот встроенный скрипт:

      $ProjectBuildNumber=$args[0]
$ProjectBuildNumber++
Write-Host "##vso[task.setvariable variable=ProjectBuildNumber;]$ProjectBuildNumber"

После этой задачи вы можете использовать увеличенную переменную ProjectBuildNumber во всех последующих задачах.