Azure Pipelines では、$(Build.BuildId) 変数などでビルド毎に一意の値を取得することができます。
しかし、この値は増える一方なので、例えば、 バージョンごとに1からビルド番号を付番するといった用途には使えません。
この記事では、そんな時に使える、ビルドごとにカウントアップし、指定したキーが変わるタイミングでリセットするカウンター関数を説明します。
これを使うと、メジャーバージョンが上がるごとにリセットするビルド番号を自動付番する、といったことが可能になります。
使用方法
- counter(<キー>, <カウント開始値>)
- キー
- この値が変わるとカウントがリセットされる
- キーが同じであれば、パイプラインが実行されるたびに1ずつ増やした値を返す
- カウント開始値
- リセット後の最初の値
- キー
使用例
variables:
verMajor: 1
verMinor: 4
verBuild: $[counter(format('{0}.{1}', variables['verMajor'], variables['verMinor']), 1)]
steps:
- script: echo Version.$(verMajor).$(verMinor).$(verBuild)
displayName: 'Show version'
実行結果(1回目)
実行結果(2回目)
注意点
- 指定できるキーは一つだけのため、複数の値をキーにしたいときは使用例のように結合する必要があります
- variables でしか使用できません
- その他の場所では関数として解釈されません
- どうしても使用したい場合は後述のように job を分離します
動的に取得した値をキーにしたい
variables は job 毎に設定できることを活かして、job を分離して、前 job で値を取得→後 job の variables で値を設定という形をとります。
jobs:
- job: GetVer
steps:
- script: 'echo "##vso[task.setvariable variable=verMajor;isOutput=true]2"'
name: Version
- job: SetVer
dependsOn: GetVer
variables:
verMajor: $[dependencies.GetVer.outputs['Version.verMajor']]
verBuild: $[counter(variables['verMajor'], 1)]
steps:
- script: 'echo "$(verMajor).$(verBuild)"'
displayName: 'Show version'
実行結果