k0kubun 君が頑張って短い期間で Ruby をリリースしていて、それは大変ありがたいことな一方で、自分がぼちぼちとやっていた docker image, snap package, ruby-build, all-ruby などなどなどの、リリース後作業の数もリリース頻度の増加に伴って増えるという状態になったので、マジで頑張って自動化してみた。
調べてみると、リポジトリを跨いで GitHub Actions を起動させるためには repository_dispatch という定義を actions に
追加した上で外部から起動させるための識別子として types
に文字列を追加すると良いらしい。
この辺、どうにも書いてあることが異なるエントリが多くて迷ったが、まとめると以下ということらしい。
で、呼び出す側は以下のような payload を外から投げる必要がある。例えば https://github.com/ruby/docker-images/pull/103 というように、docker image をビルドする workflow に repository_dispatch を追加したら
curl -L -X POST \
-H "Authorization: Bearer xxx" \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/ruby/docker-images/dispatches \
-d '{"event_type": "build", "client_payload": {"ruby_version": "3.3.4", "arch": "amd64", "latest": "true"}}'
みたいに curl を投げると workflow を起動することができる。Bearer に設定する GitHub の token は docker-images のリポジトリで workflow を起動できる権限、つまり write できる必要がある。
これで docker image は別のリポジトリの Actions などからビルド実行できるようになったので https://github.com/ruby/ruby/pull/11286 というように ruby/ruby の方で workflow_dispatch を起動すれば動くようにしておいた。
この repository_dispatch だけど、上に書いたようにめちゃくちゃ楽に定義してエンドポイントとして追加できるので、ちょっとした API サーバーみたいに使うこともできそうな気がする。
シリーズ購読で配信されたので読んだ。前からちらほらと出ていた病院がここにきて問題の中心になったので、そういう伏線だったのか〜と面白かった。乗っ取りとか、ヤクザみたいな話が中心になっていて良い。
東博の内覧会とは別に年に1回開催される賛助会員向けの事業報告などが行われるイベントに参加してきた。自分は2回目ではあるけど、神護寺の特別展を音声ガイドを聞きながらもう一度見直す感じで。
帰りに集中豪雨がちょうど上野公園付近を通る時間になっていて、なかなかびしょ濡れになってしまった。