Azure  PipelineのPowerShellで各種変数の取得方法チートシート
2021-02-25
azblob://2022/11/11/eyecatch/2021-02-25-azure-pipeline-variables-000.jpg

この記事はなむゆの個人ブログにもマルチポストしています。


はじめに

みなさーん、パイプライン、組んでますか?
組んでたらどうというわけでもないのですが、最近パイプライン組み盛りのなむゆです。
Azure Pipelineではパイプラインを実行するためにyamlファイルを書きますが、そこでは様々な方法で設定した変数を利用できます。
特にpowershellでは設定した変数をフル活用して各種処理を行ったりするのですが、その設定した変数を使うときに毎回シグナルを忘れて調べる羽目になっていたのでチートシートを作った共有です。
PowerShell以外のタスクにおいても引数の取得はできますが、所によって取得のシグナルが異なっていたりするので、一番よく使う例、あと他のタスクでもたいてい同様の書き方になる例としてpowershellでのシグナルをまとめています。

各種変数の取得方法チートシート

変数の取得元変数使用時のシグナル
パラメータ${{ parameters.パラメータ名 }}
variableで定義した変数$(変数名) または ${{ variables.変数名 }}
variable groupから取得する変数$(変数名)

それぞれの変数と使いどころ

パラメータ(Runtime parameters)

パラメータはドキュメントでは「Runtime parameters」とも呼ばれ、パイプラインの実行ごとに引数として渡してやるのが特徴です。
それにより、パイプラインの実行ごとに値を切り替えることができるのでパイプラインの実行ごとに別の値を設定して実行することが可能です。
yaml内では、一番上の階層にそれぞれ変数の名前、表示名、型、オプションでデフォルト値を設定して指定します。
例:

parameters:  
  - name: "sampleParam"  
    type: string  
    displayName: "SampleParameter"  


使用時は、 $ と波かっこ二つで囲い、 parameters.の後に変数名を入れて使います。
例:
${{ parameters.sampleParam }}

variable

variableは、yaml内で設定できる一般的な固定値です。
主に同じ固定値を何度も使いまわすときに使っています。
固定値の値が変更になった時の修正範囲を少なくできます。
ドキュメントにあるように、root、stage、jobのスコープに対して変数を設定することもでき、全体に対して設定すると変数名が被るような場合にも適用範囲を分けて実行することができます。
また、もし変数名が被った場合は、rootよりstage、stageよりjobの変数の値が優先されます。
スコープが狭いものほど優先して適用されるあたりcssと若干似ているようにも感じますね。
例(rootに設定する場合):

variables:  
  - name: SAMPLE_VARIABLE_VALUE  
    value: sample variable value  


使用時は、 $ とかっこで変数名を囲むか $ と波かっこで囲んでvariables.の形で書く方法が一般的です。
違いは変数の値が処理されるタイミングのようです。
テンプレートを使用しているか、conditionを使用しているかといった場合によって使い分けます。

variable group

variable groupは使用する変数の値をあらかじめ設定して保持しておく仕組みです。
これを使用することでparameter程ではないけれども使用する値が時々変更されるような場合や、yamlファイルの中には直接書き込みたくないシークレットの値を扱うことができます。
個別の値の設定の方法はドキュメントにあるので今回は省略します。
以下はパイプラインyamlでの使用例です。
variableと同様にvariablesに書きますが、- group として設定してやる必要があります。
例:

variables:  
  - group: SAMPLE_VARIABLE_GROUP  


これで、 SAMPLE_VARIABLE_GROUP のvariable groupから値が読み出されるようになりました。
個別のvariableの名前を宣言する必要はなく、これでこのvariable groupの中の変数が読み出せるようになります。
以下の例では、 SAMPLE_VARIABLE_GROUPのvariable group内にSAMPLE_VARIABLE_GROUP_VALUE という名前の変数が設定されていると仮定した例です。
例:
$(SAMPLE_VARIABLE_GROUP_VALUE)

なお、variable groupの値についてはpowershell内では $() の書き方のみ使用できるようです。

おわりに

今回はazure pipelineで設定する変数のpowershell上での取得方法のチートシートを共有しました。
パイプラインを作成する際にはたいてい何かしら変数を使って処理を出し分けたい要件があると思いますが、その際に役に立てば幸いです。

参考