У меня есть конвейер сборки, единственная цель которого - взять двоичные файлы, сгенерированные устаревшим процессом сборки, и упаковать их в пакет NuGet. Номер версии пакета NuGet должен соответствовать номеру версии двоичных файлов, и мне бы очень хотелось, чтобы номер серии («имя» YAML) также совпадал, но мне также нужно добавить номер редакции до концакаждая сборка из-за правил уникальности для каналов NuGet.
Я знаю, как получить номер редакции, если я использую номер версии, который известен заранее:
versionNumber: 4.0.0
revision: $[counter(variables['versionNumber'], 0)]
buildVersion: $[ format('{0}.{1}', variables.versionNumber, variables.revision) ]
name: $(BuildDefinitionName)_$(versionNumber)-rc$(revision)
, но в этомcase я не знаю versionNumber
до времени выполнения, потому что я извлекаю его из информации о версии в другой DLL. Итак, я настроил это, чтобы сделать следующее:
- powershell: |
$version = gci -Path $env:BUILD_SOURCESDIRECTORY -Recurse -Filter my.dll | % { $_.versioninfo.ProductVersion }
Write-Host "##vso[task.setvariable variable=version]$version"
- powershell: ${{ format('Write-Host "##vso[task.setvariable variable=revision]{0}"', counter(variables['version'], 0) }}
- powershell: |
$version = "${env:VERSION}-rc${env:REVISION}"
Write-Host "##vso[build.updatebuildnumber]${env:BUILDDEFINITIONNAME}_${version}"
Это не работает, я полагаю, потому что вы не можете использовать counter
в этом контексте, вы можете использовать его только при определениипеременная. Но если я попытаюсь сделать это ранее в разделе variables
, значение переменной version
не будет установлено правильно, поэтому я получу неправильный счетчик. Есть ли способ получить этот номер редакции динамически после Я выполнил первые несколько задач, чтобы получить номер версии?