Galaxy Z Fold 7 の特典でついてきた AI Pro の期限が終わって、使い続けることもないかなーと AI Plus にダウングレードして過ごしていたんだけど、Google I/O で AI Pro に Youtube Premium Lite をつけるよ、という発表を見て今のプランとの総額の差額を考えたら実質無料じゃん、となったのでアップグレードした。
アップグレードの UI だとプランアップグレードすると年額払いの残りはどうなるのか全く書いてないのだけど、AI Plus からアップグレードしたら即座に AI Pro 1年分が課金、AI Plus の残日数の日割分が refund された。また、Youtube Premium Lite の特典はすでにある subscription とは別っぽく、今のプランは解約。これ、解約しないで気がつかずに払い続ける人いそう。
貧乏な話だが Youtube の方は日割り返金などはないから次回の請求日ギリギリに AI Pro に入ればよかった、かもしれない。
今週はずっとこれをやっていたのだけど、Ruby の CI のうち、パッケージ、つまりほとんどのユーザーが tar.gz などとしてダウンロードしてビルドしているもののテストは ruby/ruby のリポジトリではなく、ruby/actions という便利ツール/ワークフローを集めたリポジトリにあった。
https://github.com/ruby/actions
これは、znz さんがエイッと頑張って、まずはワークフローで tarball を作るというのを GitHub Actions で実現し、そこから派生して、作成した tarball を使ってビルド、テストが通るか、というのを同じ場所のワークフローで用意、あとは daily schedule でテスト結果を通知して、僕などが眺めて失敗しているようだったら直すというのを長年やってきていた。
で、こうなるとビルドプロセスの workflow への記述が ruby/ruby と ruby/actions の2箇所に分散することになり、例えば macOS で何かが変わったので、workflow を変更しなくてはいけない、というときに ruby/ruby では直したが ruby/actions は忘れて daily build で落ちました、ということが起こったりする。
daily build で落ちて気が付く、というのは良い方でたまにリリース直前になって Windows のパッケージテストが落ちました、このコミットが漏れていたから、ということもあって本当に最悪な時もあった。
そんなわけで、この snapshot test と呼ばれるものを tarball-test として ruby/ruby へ全てマイグレートして、pull request や master push ごとにソースツリーから tarball を作成し、作成した tarball を展開、ビルド、インストールまでを実行するいわゆる system test 的なものを実行するようにした。
異様に pull request が多いのは、単に migrate するだけではなく、「今はこの step は不要」みたいのも今回徹底的に見直したからです。
また、今までは600行くらいの yaml ファイルが4つ、さらに毎年コピーして master から 4.0 に派生、みたいにしていたものもやめて Ubuntu/macOS/Windows それぞれの tarball test を master/4.0-3.3 の全ブランチに展開してそれぞれのブランチで面倒を見るようにもしておいた。これで、ブランチごとにテストが実行されるようになるので、ビルドできない!みたいなことはバックポート pull request を作成すればすぐに気が付くはず。
まだ、最終的なリリースワークフローに、今回作った tarball-test を組み込んではいないのだけど、次回の安定版リリースの時にその辺も組み込んだ上で動作テストして今回の migrate はおわり、って感じで行こうと思う。