🛠️
GitHub Actionsのワークフロー手動実行時にフラグを切り替えて動作も切り替える
GitHub Actionsのワークフローを手動で実行する際、今回はテストを省略したいとか、今回は特定のスクリプトを走らせたいということがあると思います。GitHub ActionsのGUIからフラグを切り替える方法をまとめます。

workflow_dispatchで実行する時のインタフェースがこのようになります。
ポイント
-
workflow_dispathを指定する時に、type: chiceのinputsを設定してあげます。 -
jobやstepの実行をif:で制御します。
name: Sample Dispatch Workflow
on:
workflow_dispatch:
inputs:
first-flag:
type: choice
description: first-jobをやるかどうかのフラグ
required: true
options:
- withFirst
- withoutFirst
jobs:
first-job:
name: First Job
runs-on: ubuntu-latest
# withFirstを選択していたらfirst-jobは実行される
if: github.event.inputs.first-flag == 'withFirst'
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Echo String
run: echo "🐔"
needsでjobに依存関係があるが、そのjobをスキップした場合も後続のjobを実行したい場合は、以下のようにします。
# 中略
jobs:
first-job:
...
second-job:
name: Second Job
runs-on: ubuntu-latest
needs: [first-job]
if: |
always() &&
!contains(needs.*.result, 'failure') &&
!contains(needs.*.result, 'cancelled')
steps:
...
if: always() && !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled')
を用いることで依存元のjobが成功した時かスキップされた時に後続の処理が実行されるようにできます。
Discussion