仕事でGithub Package Registoryつかってるんだけどある日pushしたgemを使おうとしたら500エラーがでて使えなくなった。
でてきたエラーメッセージはこれ。
HTTP GET https://xxxxxx@rubygems.pkg.github.com/org/quick/Marshal.4.8/gemname.gemspec.rz
HTTP 500 Internal Server Error https://xxxxxx@rubygems.pkg.github.com/org/quick/Marshal.4.8/gemname.gemspec.rz
Net::HTTPInternalServerError: The GitHub Packages service encountered an error.
Bundler::HTTPError: Net::HTTPInternalServerError: The GitHub Packages service encountered an error.
これが400とか401 、403なら原因もなんとか特定できそうなもんだが、500だと向こうでエラーが起きているのか、こっちの記述が悪いのかが切り分けられずに困る。
調査要素
問題の切り分けは一つ一つしていく。
- 作成したgemのgemspec
- gemをインストールするシステム(ここではDockerコンテナ内)
Dockerの問題か、Gemの書き方の問題か複数絡み合っていて、正直ようわからんかった。
結論
bundlerとRubyが最新(2022年5月6日時点)だとGithub Package Registory経由でgemのインストールが使えない(ものもある)。
マジでそんなことある……?という気分だったけど使えなかった。
MacのローカルでもDockerで最新のRubyコンテナを使ってもダメだったので、これは間違いなさそう。
今回は最新の一つ手前にして対応したが、これは問題案件なんじゃなかろうか。
今後
本来あるべきなら、Rubyの開発者コミュニティとかになにか伝えるべきなんだけど、時間切れ。
当分はRubyのバージョンおとして対応すんべ。
20220517追記
Ruby3.1.2 + Bundler 2.2.17だと動作確認できた。最新のRubyではなくBundler側の問題のようだった。
Rubyのバージョンを落として対応しなくてもよさそうだ。