毎年やる作業ということもあり、個人gem全部のGitHub Actionsの設定を修正してPRを投げるツール自体は作ってるのでそんなに大変ではなかったです。
怠惰を突き詰めた結果、自作ツールで一気にPRを26個生成した図 pic.twitter.com/pIA4oWb8Vs
— sue445 (@sue445) 2021年12月31日
ツールについては詳しくは https://speakerdeck.com/sue445/ruby-on-ci-number-ginzarails?slide=79 を読んでください。
例年だとPRを一斉に作ってビルドが通ったらヨシッ!って感じでマージするだけの定形作業なんですが、今年はいくつかハマったのでピックアップ
Psych 4.0の非互換で動かなくなった
詳細は下記を参照
Psych.load
のデフォルトが safe_load
になった関係でYAMLファイルを読み込んでるところで
Psych::DisallowedClass: Tried to load unspecified class: Date
のようなエラーが出るようになったので対応しました。
https://github.com/sue445/rubicure/runs/4672373245?check_suite_focus=true
で、permitted_classes
を使おうとしたところ permitted_classes
はPsych 3.1.0以降にしか存在せず、かつPsych 3.1.0以降を含んでるのがRuby 2.6.0以降だったので*1、いくつかのgemでRuby 2.6.0未満もサポートをきってメジャーバージョンアップしました。
rubicure (3.0.0): All about Japanese battle heroine "Pretty Cure (Precure)". https://t.co/2ImrcNQ9QI
— rubygems_news (@RubygemsN) 2021年12月31日
sengiri_yaml (1.0.0): divide yaml file https://t.co/SXlcz7DTNP
— rubygems_news (@RubygemsN) 2021年12月31日
リリースして気づいたけどgemspec側でPsych 3.1.0以降を指定してたら古いRubyのバージョンのサポートを切らなくてよかったかもしれない。(Ruby 2.5は既にEOLなのでサポートきっても支障はないんだけど)
Ruby 3.1.0 + Rails(activerecord) 7.0が現時点では動かない
詳しくは https://gist.github.com/yahonda/2776d8d7b6ea7045359f38c10449937b を参照。
そのうち7.0.1が出るだろうと思ってactiverecordを使ってるgemは gem "activerecord", "~> 7.0.1"
をつけてDraft PRで寝かせておくことにしました
PRを作るとCircleCIからBANされた
gemが軒並みRuby 3.1対応したのでアプリもやるかーと思ってPRを作った瞬間CircleCIからBANされて厳しい顔になってます。
Ruby 3.1.0対応のPRを作ったらCircleCIにBANされた時の顔をしています。
— sue445 (@sue445) 2021年12月31日
前も誤検知でBANされて問い合わせで対応してもらったので一応問い合わせは投げたけど、今回はさすがに年明けかなあ pic.twitter.com/YDAtxOSIlP
このPRの後にもいくつかPRを作ったけど同様にBANされたので諦めてサポートの対応待ち。
2022/1/1 16:00追記
CircleCIのサポートチケット作った数時間後に対応されてた。(自動検知システムでブロックされてたらしい)
1プロジェクトだけどうしてもビルドできなかったのでまだ完全解決ではないんだけど正月に対応してもらえるとは思わなかったので神対応すぎる。
2021/1/6 18:00追記
書くの忘れてたけど残り1つも1/3にBAN解除されていました。