くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

GitHub ActionsをAPIで起動する(repository_dispatch)

開発しているWebサービスGitHub Actions連携したいな
と思ったときに、いろいろ調べたときの備忘録。

GitHubの公式ドキュメントだとこのあたり。

イベントを受け取る

APIで送られたイベントを受け取れるよう、
ワークフローのyamlに以下を追加。

on:
  repository_dispatch:
    types:
      - my-custom-type

送られてくるイベントのタイプは自由で指定でき、
複数記載できるので、任意のイベント名を追加しておく。

イベントを送る

受け取れるようにyamlを変更したので、
GitHub REST APIを使ってイベントを送ってみる。

# POST /repos/{owner}/{repo}/dispatches
$ curl \
  -X POST \
  -H "Accept: application/vnd.github.v3+json" \
  -H "Authorization: token <your_token>" \
  https://api.github.com/repos/OWNER/REPO/dispatches \
  -d '{"event_type":"my-custom-type"}'

event_typeに、さきほどyamlに追記したイベント名を指定すればOK。

GitHub REST APIを使うためにトークンが必要だけど、

  • Personal access tokensの場合は、repoのすべて
  • GitHub Appsの場合は、metadata:readcontents:read&write

の権限が必要

Create a repository dispatch event | GitHub Docs

注意点

repository_dispatchでのトリガーは、デフォルトブランチのみ有効らしい。。

デフォルト以外のブランチでは、ワークフローが実行されないことを注意してください。

デフォルトブランチ以外の場合は、workflow_dispatchを使えばOK

サンプル

これを使ったSSSAPIのWebhook機能のサンプルも作ってみた。

github.com

以上!! 便利(*´ω`*)

参考にしたサイト様