見出し画像

GitHub Actions の Workflow Dispatch 最高だよ

GitHub Actions 使っていますか? 私はめっちゃ使ってますよ。watura です。

GitHub Actions 便利なんですけど、手動で任意の Action を呼び出す方法が不便な状態でした。手動ではなく、全部自動でガンガン実行するぜ!!というのもありかもしれないですが、お金の都合もあるので、あまりできません。

iOS アプリを TestFlight に Deploy したいけど、
・master が更新されるたび
・一定時間ごと
・タグきるたび
とかしかできなくて困るなぁってなったりしませんでしたか?

一応、手動で任意の Trigger を呼び出す方法はありました。

repository_dispatch

以前であれば、repository_dispatch を使って実行するというパターンが多かったのではないかと思います。

on:
 repository_dispatch:
   types: [staging_deploy, production_deploy]

というようなのを書いておき、

#!/bin/bash

if [ $# -ne 1 ]; then
  echo "Usage: ./command.sh [test/deploy]" 1>&2
  exit 1
fi
echo "{\"event_type\":\"$1\"}"
curl -X POST -H "Authorization: token $GITHUB_ACCESS_TOKEN" \
             -H "Accept: application/vnd.github.everest-preview+json"  \
             -H "Content-Type: application/json" \
             https://api.github.com/repos/<RIPOSITORY>/dispatches \
             --data "{\"event_type\":\"$1\"}"
$ ./command.sh staging_deploy
$ ./command.sh production_deploy

のように使える Shell Script を作って管理していました。

これはこれで便利なんですが、Access token を保存しておいたりとかが微妙に面倒でした。

新しい方法 workflow_dispatch

workflow_dispatch という新しい Trigger が発表されました。これは、GitHub 上の GitHub Actions の画面から、Workflow を実行できるようにする Trigger です。

以下のことができるようになります
・Web UI から任意のタイミングで実行
・実行時にパラメータを渡す
・repository_dispatch のように curl でも呼び出せる(?)

例(公式)

on: 
 workflow_dispatch:
   inputs:
     logLevel:
       description: 'Log level'     
       required: true
       default: 'warning'
     tags:
       description: 'Test scenario tags'  
jobs:
 printInputs:
   runs-on: ubuntu-latest
   steps:
   - run: |
       echo "Log level: ${{ github.event.inputs.logLevel }}"
       echo "Tags: ${{ github.event.inputs.tags }}" 

与えられた文字列を表示するだけのシンプルな例です。
Log Level は必須で初期値が、warning。tags は必須ではなく、初期値もなしです。

これらを設定した yml ファイルを作って、デフォルトブランチにマージされると、実行時にその二者を GitHub の画面から入力して実行できる Actions が追加されます。

私が使っている Actions

・ Staging 環境への Deploy
・ App Store への Deploy
・ Apple Developer Portal に Device を追加 & Provisioning file の更新
・ Store のメタデータの更新

というようなことにWorkflow Dispatch を使っています。

この時とは若干異なるFastlaneの設定を使っていたり、Actionsを使っているのですが、結構いい感じに呼び出せるようになるので最高です。


----

いつものあれ

株式会社 watura ではお仕事を探しています。もし、Flutter や Swift の開発リソースが必要であれば声をかけてください。