色々のってきたので、どんどん自動化している。で、今日は all-ruby の定義ファイルの追加を自動化した。
https://github.com/ruby/all-ruby/blob/master/.github/workflows/update.yml
repository_dispatch はもうわかりきった話なので、今回新しい項目としては commit & push を workflow にやらせるところだった。これは secrets.GITHUB_TOKEN
だとダメで、個々人の PAT を使えば良い。
これも ruby/ruby
から curl で叩いて実行するようにしたので、今後は勝手に追加される。ただ docker image を作成する、というのは 3h 以上かかるので、まだ手元で実行しなくてはいけない。
この辺、github actions と docker の cache、multi stage build を駆使すればなんとかなるかなあ。ということで、akr さんに相談して、個人アカウントよりは色々使える余地が広い ruby/all-ruby として引っ越してもらった。どうせやるならできることを全部頑張りたい。
続いて、ruby-build の定義ファイル追加も自動化した。今まではリリースされた後に誰かが pull-req を追加して、僕などがマージ、リリースという手続きだったけど、これでリリースされたらすぐに追加される。
https://github.com/rbenv/ruby-build/blob/master/.github/workflows/update-ruby.yml
試しに、3.3.3 を消してから、curl で Ruby 3.3.3, OpenSSL 3.0.14 を指定したら追加されている様子。
https://github.com/rbenv/ruby-build/commit/d22fa95a6e4c77945304c16ebe0d9513fec98cfb
これで、ruby/ruby
のリリースワークフローから、すぐにコミット自体は追加されるので、あとはそれを確認して人間がリリーススクリプトを実行する、ということで良さそう。
Ruby のリリースパッケージ、なぜかリリースする前から bot か何かによって ruby-3.3.4.tar.gz などが 404 の状態でネガティブキャッシュとして fastly に残っているので、毎回リリースされたら ruboty 経由でパージしていたのだけど、それらも actions で実行するようにしておいた。
https://github.com/ruby/ruby/commit/303d2319f04b7d46ad3dbf28035b83a06fdba5b3
自動化の鬼となって、あれこれ自動化し続けているけど、ruby のリリースに関しては残りは以下かなあ
どれも技術的にわからんということはなくて、やるだけではあるのでやりきってしまおう。
Launchable の川口さんが日本に来ているということで、ruby/ruby
に導入している Launchable の使い勝手であるとか、Ruby 開発メンバーはこういう開発スタイルで CI の面倒を見ているというようなことを1-2時間くらいディスカッションしてきた。
MTG のあとは会議室の近くにある九州料理の店でおしゃべりしながら夕食。お疲れ様でした。