кажется, что ответ уже есть: https://developercommunity.visualstudio.com/content/problem/240373/vsts-build-revision-does-not-increment-after-calli.html
Создайте новую переменную: patch: $[counter('versioncounter',100)]
Тогда вместо $(Rev:rrr)
вы будете использовать $(patch)
.
Я определил две тестовые переменные:
test1: $[counter('versioncounter',1)]
test2: $[counter('versioncounter2',100)]
в конвейере сборки
и вот журналы:
сборка 1 журнал агента 1
[раздел] Запуск: подготовка задания Переменные_1:
test1: синтаксический анализ выражения: Evaluationating: counter ('versioncounter', 1) Расширен: 1 Результат: '1'
test2: Анализ выражения: Оценка: counter ('versioncounter2', 100) Расширен: 100 Результат: '100'
Те же значения дляtest1 и test2 создаются для другого агента в этом конвейере сборки
Затем я выполнил конвейер сборки еще раз, и вот журнал
build 2 agent1 log
[раздел] Запуск: подготовка задания Job_1 Переменные:
test1: выражение синтаксического анализа: оценка: counter ('versioncounter', 1) расширенный: 2 результат: '2'
test2: выражение синтаксического анализа: оценка: counter ('versioncounter2', 100) Расширен: 101 Результат: '101'
Я предполагаю, что значение счетчика iсгенерировано для ключа из первого аргумента
[del] Это именно то, что я просил [/ del]
upd1 Я пытался запустить этов реальной жизни
И проблема в том, что $[counter('versioncounter',1)]
работает только для инициализации переменной сборки.Я пытался использовать его в сценарии PS, как показано ниже
- powershell: |
$fv = Get-Content versionFile
$buildIncrementalNumber = $[counter($fv,1)]
, но не получилось:
$[counter : The term '$[counter' is not recognized as the name of a cmdlet,
function, script file, or operable program. Check the spelling of the name, or
if a path was included, verify that the path is correct and try again.
At E:\buildagent\networkProxy\_work\_temp\d22e789f-bed0-465a-b447-60f634d73c38.
ps1:3 char:27
+ $buildIncrementalNumber = $[counter($fv,1)]
+ ~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($[counter:String) [], ParentCon
tainsErrorRecordException
+ FullyQualifiedErrorId : CommandNotFoundException
Возможно ли получить доступ к магии $counter
из сценария оболочки build build?
upd2 Для чтения версии из файла и получения инкрементного числа с помощью $ counter magic необходимо использовать два задания.Существует ответ moswald в выпуске # 1802 для использования двух заданий.
Итак, я реализовал это, как показано ниже:
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'
здесь yaml документация по переменным
PS: нет необходимости объявлять $variableFromFile
перед разделом вакансий