🤖

Azure Pilelinesでトリガーとなったタグ名を取得する

2022/06/21に公開

最初、違う方法を書いていたんですが、@noxi515さんに良い方法を教えてもらったので訂正しました。ありがとうございました!

ビルドのトリガーにGitのタグを利用する場合、ビルド時にバージョンをタグから取得したいというのはありがちかと思います。

Gitにおけるタグは、パス「refs/tags」の下のオブジェクトになります。Azure DevOpsではトリガーブランチとして「refs/tags」のパターンをincludeすることでCIをトリガーできます。

またトリガーとなったブランチはBuild.SourceBranch変数(PowerShellの場合は${env:BUILD_SOURCEBRANCH})から取得できます。

そのため、たとえば「release/1.0.0」みたいなタグで発行したいとすると、つぎのように定義することでタグを変数にとれます。

trigger:
  branches:
    include:
    - refs/tags/release/*

pool:
  vmImage: 'windows-latest'

steps:
- pwsh: |
    $source = ${env:BUILD_SOURCEBRANCH}
    $tag = $source.Substring('refs/tags/'.Length)
    Write-Host "##vso[task.setvariable variable=tag]$tag"
    Write-Host "##[debug]Debug Tag=$tag"
  displayName: トリガータグの取得

これで以降は$(tag)として参照できるようになります。

Discussion