BitriseでGemをキャッシュする方法

BitriseのCache:Pushステップを利用して、Gemをキャッシュさせます。

なお、Bitriseのキャッシュの仕組みについてはこちらの記事で紹介しているので参考にしてください。

bamboo-hero.com

Gemをキャッシュさせる方法

こんな構成のワークフローを作成します。

f:id:bamboohero:20211130164510p:plain


Scriptステップでは以下のスクリプトを実行します。

bundle install
envman add --key GEM_HOME --value $(gem environment gemdir)


bundle installでリポジトリのGemfileGemfile.lockを基にGemをインストールします。

続いて、envmanを使ってGemのインストールディレクトリパスを環境変数GEM_HOMEに登録します。


続いて、Cache:PushステップのCache pathsに$GEM_HOMEを入力します。
こうすることで、次回Cache:PullステップでGemのインストールディレクトリパスがキャッシュからダウンロードされ、Gemのインストール処理が省略されます。

f:id:bamboohero:20211130164847p:plain


キャッシュが使われるようになったか確認する

キャッシュする前のビルドのログがこちらです。
Installing...となっていて、インストール処理が行われていることがわかります。

f:id:bamboohero:20211130165250p:plain


ステップの処理時間も1分ほどかかっていました。

f:id:bamboohero:20211130165411p:plain


キャッシュしたあとのビルドのログがこちらです。
Using...となっているので、インストール処理が省略されていることがわかります。

f:id:bamboohero:20211130165458p:plain


ステップの処理時間も約13秒と大幅に短縮されました。

f:id:bamboohero:20211130165618p:plain