Techioz Blog

開発グループでのみ使用される gem の本番環境でのバンドラー認証呼び出しを回避するにはどうすればよいですか?

概要

現在、Rails アプリケーションの 1 つとしてプライベート Github リポジトリで gem (rubocop のカスタム バージョン) をホストしています。その gem を正常にバンドルインストールするには、バンドラーはそのリポジトリに対する読み取り権限を持つ認証情報を持っている必要があります。この gem はローカル開発にのみ使用するため、gem はプロジェクトの Gemfile の開発グループの下にリストされます。

group :development do
 ...

 source 'https://rubygems.pkg.github.com/<org>' do
   gem '<custom-gem>'
 end
end

Gemfile.lock 内の関連エントリ

GEM
  remote: https://rubygems.pkg.github.com/<org>/
  specs:
    <org>-rubocop (0.1.2)
      rubocop (= 0.77.0)
      rubocop-rails (= 2.4.0)

実稼働環境では、この gem は必要ありませんが、デプロイ段階で、gem が使用されないにもかかわらず、バンドルが依然として認証情報を要求するエラーが発生しました。

このエラーは Bundler を 2.2.28 から 2.3.7 にアップグレードした後に発生した可能性がありますが、私たちはそれについて肯定的ではありません。

使用されない gem に対する認証呼び出しを回避するようにバンドラーを構成することはできますか?この認証呼び出しを回避できれば、実稼働環境で機密の資格情報を指定することを避けることができ、作業が大幅に軽減されます…この質問に答えるバンドラーのドキュメントまたは既存の Github の問題があれば、大歓迎です。

その他の情報:

ルビー 3.1.1

レール 7.0.2.3

実稼働ビルドでは、次のコマンドを指定します。

bundle config set --local without 'development test' && bundle install

ビルド ログからこの問題についての情報が得られました。

Step #1 - "build-push": Authentication is required for rubygems.pkg.github.com.
Step #1 - "build-push": Please supply credentials for this source. You can do this by running:
Step #1 - "build-push": `bundle config set --global rubygems.pkg.github.com username:password`
Step #1 - "build-push": or by storing the credentials in the `BUNDLE_RUBYGEMS__PKG__GITHUB__COM`

解決策

推測する必要があるとすれば、スキップするグループのコロン区切りのリストを作成するようにコマンドを更新する必要があると思います。

バンドラーのドキュメントより

したがって、コマンドを次のように更新して、何が起こるかを確認してください。

バンドル構成セット –local ‘development:test’ なし && バンドルインストール