Итак, есть переменная счетчика, которая может обрабатывать некоторые из того, что вы хотите .
Используя его, я смог частично заставить его работать с тем, что вам нужно.
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
variables:
major: 1
minor: 0
# define b as a counter with the prefix as variable a, and seed as 100.
#patch: $[counter(variables['major'], 1)]
${{ if eq( variables['Build.SourceBranchName'], 'master') }}:
patch: $[counter(variables['major'], 1)]
build: 0
${{ if eq( variables['Build.SourceBranchName'], 'develop') }}:
build: $[counter(variables['major'], 1)]
#patch: ?
name: $(major).$(minor).$(patch).$(build)
steps:
- bash: echo $(major).$(minor).$(patch).$(build)
Но, насколько я понимаю, нет хорошего способа получить текущую переменную счетчика $ (patch) при запуске сборки. Примечание: мне было бы интересно узнать, как получить при пользовательских значениях счетчика . Скорее всего, вы могли бы использовать API и go получить Buildnumber с последнего запуска, извлечь номер патча и использовать его повторно, но это приводит к тому, что вы задали этот вопрос.
Есть ли способ достичь что я ищу с помощью конвейеров или я лаю не на том дереве, пытаясь go об этом таким образом?
Я бы поспорил изменить ваш подход. Если вы разрабатываете собственные схемы управления версиями с помощью powershell или yaml, я бы сказал, что управление версиями достаточно важно для вас, чтобы использовать GitVersion или какой-либо другой аналог. Для начала существует обучающая кривая, но один из стандартных режимов GitVersion, скорее всего, будет отвечать вашим целям.
Здесь есть конвейерная задача , которая будет обрабатывать вычисления версии для вас, если вы просто добавите его в свой конвейер.
- task: GitVersion@5
inputs:
runtime: 'core'
configFilePath: 'GitVersion.yml'
Лучше предоставить GitVersion.yml, который является схемой или набором инструкций для того, как сделать управление версиями.
Существует шоколадная упаковка , которую вы можете установить, чтобы поэкспериментировать с ней. Если вы запустите GitVersion init
в root вашего репо, он проведет вас через некоторые варианты управления версиями и создаст для вас GitVersion.yml.
mode: Mainline
branches:
master:
tag: ''
regex: master
increment: minor
develop:
tag: ''
regex: develop
increment: patch
ignore:
sha: []
merge-message-formats: {}
В качестве примера Приведенный выше режим основной линии дает мне: