🛠️

GitHub Actionsのワークフロー手動実行時にフラグを切り替えて動作も切り替える

2022/01/17に公開

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


workflow_dispatchで実行する時のインタフェースがこのようになります。

ポイント

  • workflow_dispathを指定する時に、type: chiceinputsを設定してあげます。
  • jobstepの実行を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 "🐔"

needsjobに依存関係があるが、その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