Azure Pipelines - Установка пользовательской переменной для номера сборки - PullRequest
0 голосов
/ 22 апреля 2020

В моем 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 всегда на одну ревизию позади.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Я проверил это, и оно работает хорошо. Ниже мое воспроизведение, вы можете обратиться к:

В конвейере выпуска:

Write-Host '##vso[task.setvariable variable=MyBuild]$(Build.BuildNumber)'

enter image description here

md $(Agent.ReleaseDirectory)/$env:MyBuild/Debug

enter image description here

Выбор источника сборки в качестве артефакта выпуска, выбор версии по умолчанию Последний , включение Continuous deployment trigger. Это создает релиз каждый раз, когда доступна новая сборка.

Тестовый результат:

enter image description here

enter image description here

enter image description here

Кроме того, меня смущает вопрос: как вы используете $(BuildDirectory) в конвейере выпуска? Agent.BuildDirectory:
Локальный путь на агенте, где создаются все папки для данного конвейера сборки . Эта предопределенная переменная не должна быть доступна в конвейере выпуска, мы должны использовать Agent.ReleaseDirectory. Вы можете сослаться на предопределенную переменную .

0 голосов
/ 23 апреля 2020

скрипт Powershell для обновления пользовательского номера сборки

- powershell: |
[string]$version="$(Build.Repository.Name)_SomeCustomData_$(Build.BuildId)"
Write-Output "##vso[build.updatebuildnumber]$(Version)"
displayName: Set Build Number
...