workflow_dispatchの誤実行防止策にinputsでの絞りを試してみた

workflow_dispatchのオペレーションミスの回避策を考えるうちに思いついた一例を試してみました。操作ミスがクリティカルになるワークフローの対策にはなり難いかもしれません。
2020.09.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

実行できる前提が異なる複数のActionsをworkflow_dispatchで動かせるようにしたところ、名前の類似でたまたま上下に並び、選択したActionで正しいのか確認することに神経を尖らせる状態になりました。

改善策をどうするか迷いどころでしたが、S3バケット等を削除する際に対象バケット名を入力させるフォームがあることを思い出し、妥当かはともかく動作確認のため試しに真似てみることにしました。

workflow の実行条件

以下の条件での実行としてみます。

  • inputsでの入力を強制
  • 入力内容がrunになっている

workflow の作成

正常動作の確認にechoも実行しておきます。

name: Hello World
on:
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'If run flow, input "run".'
        required: true
        default: ''
    branches: [ master ]
jobs:
  build:
    if: github.event.inputs.logLevel == 'run'
    runs-on: ubuntu-latest
    steps:
    - name: Run a one-line script
      run: echo Hello, world!

以下のようなフォームになります。

実際の動作

未入力時

ポップアップでの警告となります。実行すらできません。

入力一致時

Run echo Hello, world!
echo Hello, world!
shell: /bin/bash -e {0}

問題なく動作しています。

入力不一致時

runではなくnoにしてみます。

Stepが実行されない場合は詳細のステータスすら表示されないようです。

あとがき

inputsを使ってのチェック方法の一例を試してみました。

コピペで済ませることも可能なため、依存しすぎるのは危ういかもしれません。ただ、フォームの有無によるナビゲーションミス回避には利用できそうです。