🤖
Azure Pilelinesでトリガーとなったタグ名を取得する
最初、違う方法を書いていたんですが、@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