このページの本文へ

FIXER cloud.config Tech Blog

Azure Pipelinesのyamlでelse-ifが使えるようになっていた件

2021年10月21日 11時00分更新

文● なむゆ/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「Azure pipelineのyamlでelse-ifが使えるようになっていた件 #Azureリレー」を再編集したものです。

はじめに

 久々にAzure DevOpsのアップデートを眺めていると、パイプラインyamlで使う式関連でアップデートがあったようなので調べてみました。

 パイプラインyamlの式(expression)でElse ifやElseが書けるようになっていました

New YAML conditional expressions

 2021年9月のAzure DevOpsのアップデートで追加された式の表現で、if-elseif-elseの式の形で書けるようになりました。

 これまではvariable等で使用する変数の値を条件で出し分けたいとき、if式を使うと出し分けが可能だったのですが、これだと例えば以下のようなyamlのパイプラインがあった時、


trigger:
- none
pr:
- none

pool:
  vmImage: ubuntu-latest

parameters:
  - name: "param1"
    type: string
    displayName: "param1"

jobs:
  - job:
    displayName: test
    variables:
      ${{ if eq(parameters.param1, 'a') }}:
        val: a is setted
      ${{ if eq(parameters.param1, 'b') }}:
        val: b is setted
    steps:  
    - script: |
        echo message: $(val)
      displayName: 'test'


 param1にaかb以外のパラメータが入っていた場合は$valの変数にパラメータが入らなくなってしまいます。

 今回の更新でここにelse if式やelse式を追加することができるようになったので、今なら例えば以下のように書くことができます。


trigger:
- none
pr:
- none

pool:
  vmImage: ubuntu-latest

parameters:
  - name: "param1"
    type: string
    displayName: "param1"

jobs:
  - job:
    displayName: test
    variables:
      ${{ if eq(parameters.param1, 'a') }}:
        val: a is setted
      ${{ elseif eq(parameters.param1, 'b') }}:
        val: b is setted
      ${{ else }}:
        val: something else setted
    steps:  
    - script: |
        echo message: $(val)
      displayName: 'test'


 これを実行すると、たとえばparam1にcを入れてパイプラインを実行すると、実行結果には


message: something else setted

 と出力されます。

 これにより、条件に当てはまらない場合のvariableを指定しておけばif文で条件を網羅しなくても済むようになりました。

おわりに

 Azure DevOpsやAzure Pipelineは今も大小さまざまなアップデートが頻繁に上がってきていて前までできなかったことが知らない間にできるようになったりすることもあります。

 こまめに要チェックですね。

参考
New YAML conditional expressions

General availability: Azure DevOps September 2021 updates

なむゆ/FIXER

最近インフラ始めました。
k8s社内最強を目指します。

[転載元]
Azure pipelineのyamlでelse-ifが使えるようになっていた件 #Azureリレー

カテゴリートップへ