LoginSignup
0
0

More than 3 years have passed since last update.

PodsディレクトリをGit管理するならBitriseのキャッシュ対象外にしよう

Last updated at Posted at 2020-05-19

はじめに

BitriseでiOSアプリのビルドを実行した時に、Build Phasesで行われるCocoaPodsのチェックで以下のようなエラーとなるケースがありました。結論としてはBitriseのキャッシュの影響でしたが、そのエラーとなるケースと解決策についてまとめます。

error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.

前提条件

このエラーが起きるのに関係していた前提条件はこちら。

  • パッケージマネージャーにCocoaPodsとCarthateを併用している
  • CocoaPodsの成果物であるPodsディレクトリもGit管理対象にしている
  • Carthageの成果物であるCarthageディレクトリはGit管理対象外にしている
  • Carthageの成果物をキャッシュするために Bitrise.io Cache Pull/Push ステップを使用している
    • キャッシュ対象としてCarthageディレクトリのみを明示

なぜエラーになったのか

特に指定はしていないのですが 暗黙的にPodsディレクトリがキャッシュ対象 になっていました。つまり、Git管理下にあるPodsディレクトリはキャッシュにより上書きされてしまうことになり、Pods/Manifest.lockが前回実行時のものとなってしまうのです。結果、CocoaPodsのライブラリを更新したプッシュの後に、最初に書いたとおりのエラー(Podfile.lockとManigest.lockが一致しない)になっていたのでした。

解決策

Bitrise.io Cache Push ステップの bitrise_cache_exclude_paths にPodsディレクトリパスを指定してキャッシュ対象にならないようにしましょう。

bitrise_cache_exclude_pathsのデフォルト値は $BITRISE_CACHE_EXCLUDE_PATHS になっているので、Env Vars に BITRISE_CACHE_EXCLUDE_PATHS を定義してPodsディレクトリのパスを指しておけば、すべてのワークフローで有効になりますね。

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