LoginSignup
0
0

More than 3 years have passed since last update.

RailsプロジェクトにCircleCIを導入したがGemキャッシュが効いていない時の対応方法

Posted at

Railsプロジェクトで使用するCICDツールとしてCircleCIを導入・ドキュメントを参考にして設定ファイルを書いていましたが、キャッシュが効いていない動きを見せていました。

▼キャッシュが効いておらず、毎回bundle installをしているような動き
スクリーンショット 2020-05-26 17.03.54.png

▶︎この時点のジョブログ
▶︎この時点の設定ファイル

以下、CircleCIでbundle installのキャッシュが効いていない時の対処方法についてです。

解消方法

  • bundle config set --local pathコマンドで、Gemインストール先指定
  • 今までのキャッシュを使用しないよう設定ファイルを書き換え

下記をbundle installの前に追記して、対応しました。

command: bundle config set --local path 'vendor/bundle'

Githubでも見れるようにしてあります。

  • キャッシュの対象をvender/bundleに指定しているが、そこにGemが見つからず毎回インストールが走ってしまっている(キャッシュが効いていない)
  • bundle installコマンドはグローバルにGemをインストールする、プロジェクトローカルにGemたちをインストールしたいときは--path指定を入れる

以上から、CircleCI上でキャッシュがあるかどうかを確認しに行く先であるvender/bundleにGemたちがインストールされるようbundle config set --local path 'vendor/bundle'を追記。

ここまでの対応でキャッシュは効くかなと思いましたが、効きませんでした。理由としては、CircleCIの方で「すでにキャッシュファイルあるので、キャッシュ保存スキップしますわ」となってしまうから。

▼キャッシュ保存がスキップされる様子
スクリーンショット 2020-05-26 17.24.21.png

▶︎この時点のCircleCIログ

キャッシュ保存が実行されるよう、今までのキャッシュを使用しないように設定ファイルを書き換える対応をしました。

▼修正箇所
スクリーンショット 2020-05-26 17.29.16.png
p
▶︎この時点のコミット


以上の対応を行った結果、キャッシュはちゃんと効くようになりました。

▼キャッシュが効いている様子
スクリーンショット 2020-05-26 17.31.26.png

▶︎この時点のCircleCIログ


参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0