Github Actionsのワークフローを、外部の何かしらのシステムからcurlか何かで叩いて実行したいタイミングってあると思います。あったのでそのやり方を調べてみました
調べた: repository dispatch event
ワークフローをトリガーするイベント - GitHub Docs
こちらのドキュメントにある、 repository_dispatchというトリガを使用すると、webhookでトリガできるようです
やってみた: ワークフローを作成
まずは、シンプルなワークフローを作成し、Pushしておきます。(走ったら echo
するだけ)
1 | $ cat .github/workflows/dispatch-event.yml |
1 | name: repository dispatch event sample |
ここで、on.repository_dispatch.types
に、 event_type
を好きな数だけカンマ区切りで指定します。上記の例では、 apple
orange
の部分です。
これは何を指定しているかというと、のちほど curl
でPOSTする際に指定する event_type
パラメータに、 apple
か orange
が指定されていれば、Actionsが実行される、という流れになります
やってみた: Personal Access Tokenを取得する
取得方法は、こちらを参考にして下さい。
この時、 repo
にチェックが入っている状態にします
実行してみる
環境変数などを駆使して、 Authorization: token
にセキュリティトークンを渡します。(参考: コマンド履歴を残さないようにするメモ)
1 | // コマンド履歴を残さないようにする(A) |
実行します。 [ユーザ]/[リポジトリ]
の所は自身の情報に置き換えて下さい
1 | $ curl -X POST -H "Authorization: token $TOKEN" -H "Accept: application/vnd.github.everest-preview+json" --data '{"event_type": "apple" }' https://api.github.com/repos/[ユーザ]/[リポジトリ]/dispatches |
Actionsのページに行って、実行されていれば完了です