トリガーイベントにrepository_dispatch
を指定すると、GitHub API からイベントのディスパッチをした時に実行されるワークフローを作れます。
このトリガーを有効にするにはワークフロー.yml
ファイルに次を追加するだけです。
on: repository_dispatch
イベント送信
イベントの送信は例えばcurl
で以下のように行なえます。
curl -X POST \
--header 'accept: application/vnd.github.v3+json' \
--data '{"event_type": "foo"}' \
https://api.github.com/repos///dispatches
<owner>/<repo>
はワークフローを置いている GitHub リポジトリによって変わります。
もしリポジトリがプライベートであれば、repo
権限を持ったアクセストークンも送る必要があります。
--header 'authorization: bearer '
値も送ってワークフローで使う
データのclient_payload
に好きなオブジェクトデータを入れて送るとワークフローでその値が使えます。例えば以下で送ると、
curl -X POST \
--header 'accept: application/vnd.github.v3+json' \
--data '{"event_type": "foo", "client_data": {"value": "value"}}' \
https://api.github.com/repos///dispatches
ワークフローではgithub
コンテキストを通してそれを取得できます。
jobs:
build:
steps:
- name: client_payload
run: echo ${{ github.event.client_payload.value }}
# value
ちなみにevent_type
はgithub.event.action
で取得できます。