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 の開発リソースが必要であれば声をかけてください。