В моем Azure Build Pipeline (classi c, а не YAML) я установил в качестве номера сборки имя ветви, а затем переменную номера редакции. Это был мой процесс для этого: Конвейеры -> Конвейеры -> {мой конвейер} -> Редактировать -> Параметры -> Формат номера сборки
$(SourceBranchName)$(Rev:.r)
В моем тестировании это прекрасно работает.
Теперь в моем Release Pipeline первый скрипт, который я запускаю, - это скрипт PowerShell, который берет номер сборки и применяет его к локальной переменной (MyBuild), которую я создал. Сценарий выглядит следующим образом:
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 100)"
$buildNumber = $Env:BUILD_BUILDNUMBER
$pipeline.variables.MyBuild.value = $buildNumber
Эта переменная позже используется в конвейере для создания папки, в которой хранятся мои файлы релизов.
$(BuildDirectory)/$(MyBuild)/Debug
По какой-то причине моя переменная всегда отстает от сборки. Например, если мой номер сборки - master.5, папка, созданная моим Release Pipeline, - master.4. Я попытался изменить порядок, в котором находятся мои сценарии, но это ничего не решает. Это странно, потому что мой Build Pipeline правильный (всегда с правильными именами, например, master.1, master.2, master.3, et c.), Но моя переменная Release Pipeline всегда на одну ревизию позади.