in Think

Github Package Serviceでprivateに公開したgemをインストールしようとしたら「Net::HTTPInternalServerError」で怒られた話

仕事で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のバージョンを落として対応しなくてもよさそうだ。