BEACHSIDE BLOG

Azure と GitHub と C# が好きなエンジニアの個人メモ ( ・ㅂ・)و ̑̑

Azure Pipelines で matrix の値を動的に設定したい (Azure DevOps)

Azure Pipelines で、Job は依存関係を設定しない場合は並列で動作します。
同じ処理だけどパラメーターだけ異なるような Job を複数構成したい場合、matrix を使うことでいい感じに YAML を書くことができます。

今回は、その matrix を構成を動的にセットする方法のメモです。

基本的な書き方

基本的な書き方はこんな感じ。これで 6行目からの job_a 完了後、13行目からの job_b で matrix を使っています。18行目から27行目で構成されている変数のセットを使って3つの Job が並列で動作します。

動作させるとこんな感じで job_b は3つが動作します。

先述のコードの18~27行目の matrix の定義は以下のように1行で書くことも書けます。

matrix: { proj1: { PramA: proj1-val-A, PramB: proj1-val-B }, proj2: { PramA: proj2-val-A, PramB: proj2-val-B }, proj3: { PramA: proj3-val-A, PramB: proj3-val-B } }

動的に値をセットする

これを動的にセットする場合は、先述で紹介した一行で書く感じで変数を渡せばいいんですが、ダブルクォーテーション付きの値を渡す必要があります。

以下の例は11行目で matrix にセットしたい値を普通に書いちゃってますが、この部分はやりたいようにスクリプトとかで動的に構成すればいいって話です。動的に出力された結果がここにあるように JSON で出力されるようにすれば動作するサンプルになります。

あとは12行目で変数としてセットして、その値を20行目で取得しています。matrix にセットする際に変数は Runtime expressions ($[xxx] って書き方)で構成する必要があるのもポイントです。 template expression とかだとエラーになります。

参考

自分用メモ:

  • pipeline-sandbox > matrix-sandbox repo