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回目)

1回目
1回目

実行結果(2回目)

2回目
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'

実行結果

動的取得実行結果
動的取得実行結果

参考