結論
when を使います。run: の step 内のシェルスクリプトで分岐する方法はよく見るのですが、step そのものを分岐します。
使い方具体例
公式ドキュメントに書いてあるとおりです。steps: 配下に when: を書き、その配下に condition: を書き、そしてその配下に条件分岐を書きます。条件を満たした場合、その when: の内容が実行されます。
condition: を記述するか否かについては注意が必要です。公式ドキュメントにあるように、jobs: 配下の記述においては condition: の表記が必要になります。
一方で workflows: 配下の記述に置いては不要となります。
Note: When using logic statements at the workflow level, do not include the condition: key (the condition key is only needed for job level logic statements).
条件が一つだけの場合
たとえば、if a == 'foobar' のような条件の場合には、when: 配下に condition: を書き、その値として条件式を書きます。
steps: - checkout - when: condition: equal: [ 'hello', $GREETING ] steps: - run: echo "Hello, World!"
上記の equal の説明については公式ドキュメントをご覧ください*1。equal 以外に matches (正規表現での判別)もあります。
条件が「かつ」の場合
たとえば、if a == 'foobar' && b == 'hoge' のような条件の場合には、condition: 配下に and: を書き、その値として条件式を書きます。
steps: - checkout - when: condition: and: - equal: [ 'hello', $GREETING ] - equal: [ 'world', $HOGEHOGE ] steps: - run: echo "Hello and World!"
条件が「または」や「~ではない」の場合
上記までの記述と同様にして、condition: 配下に or: や not: を書き、その値として条件式を書きます。
steps: - checkout - when: condition: or: - equal: [ 'hello', $GREETING ] - equal: [ 'world', $HOGEHOGE ] steps: - run: echo "Hello or World!"
steps: - checkout - when: condition: not: matches: pattern: "^master$" value: << pipeline.git.branch >> steps: - run: echo "Hello, master branch World!"
*1:2つの値が等しい、ではなく、配列内のすべての値が等しい、ときに true になります