トップ «前の日記(2024/07/30 (火) ) 最新 次の日記(2024/08/01 (木) )» 編集 RSS feed

HsbtDiary


2024/07/31 (水) [長年日記]

GitHub Actions の repository_dispatch

k0kubun 君が頑張って短い期間で Ruby をリリースしていて、それは大変ありがたいことな一方で、自分がぼちぼちとやっていた docker image, snap package, ruby-build, all-ruby などなどなどの、リリース後作業の数もリリース頻度の増加に伴って増えるという状態になったので、マジで頑張って自動化してみた。

調べてみると、リポジトリを跨いで GitHub Actions を起動させるためには repository_dispatch という定義を actions に 追加した上で外部から起動させるための識別子として types に文字列を追加すると良いらしい。

この辺、どうにも書いてあることが異なるエントリが多くて迷ったが、まとめると以下ということらしい。

  • types に記載した文字列と jobs の name が一致している場合はその job のみを起動する
  • types に記載した文字列が jobs に存在しない場合は、workflow 全体を実行

で、呼び出す側は以下のような 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 サーバーみたいに使うこともできそうな気がする。

九条の大罪 12 を読んだ

シリーズ購読で配信されたので読んだ。前からちらほらと出ていた病院がここにきて問題の中心になったので、そういう伏線だったのか〜と面白かった。乗っ取りとか、ヤクザみたいな話が中心になっていて良い。


九条の大罪(12) (ビッグコミックス)
真鍋昌平
小学館
¥759

東博の賛助会イベントに参加した

東博の内覧会とは別に年に1回開催される賛助会員向けの事業報告などが行われるイベントに参加してきた。自分は2回目ではあるけど、神護寺の特別展を音声ガイドを聞きながらもう一度見直す感じで。

帰りに集中豪雨がちょうど上野公園付近を通る時間になっていて、なかなかびしょ濡れになってしまった。