iOSアプリを複数人で開発するときに、メンバーのcocoapodsのバージョンが合わずに困ったことがあったので、
bundlerを使ってバージョンを合わせました
というメモです
CIで別の端末でjenkinsも使っていたので、そいつもバージョン揃ってハッピーになれた
bundler導入
bundle init
vim Gemfile # cocoapodsだけ書いとく
mkdir bundle
bundle install --path bundle
これで ./bundle/
以下にgemがインストールされる
.gitignore設定
# .gitignore
+/bundle
touch bundle/.keep
git add -f bundle/.keep
これで、./bundle/
以下はignoreされるけど、
ディレクトリは残しておきたいので、.keep
ファイルだけaddしとく
Gemfile.lock
はignoreしません
このファイルでcocoapodsのバージョンをロックしているため
.bundle/config
も生成されるけど、これもignoreしない
このファイルでbundle install先のディレクトリを指定してるため
このファイルがあれば、他のメンバーは bundle install するだけで、
オプションなしで自動的にローカルのbundle以下にインストールされる
人によってインストール先変えたいとかの要望あれば、逆にignoreする運用を考える
pod install
bundle exec pod install
bundle exec コマンドを使うと、ローカルインストールしたgemを使うように指定できる
導入以降、pod コマンドはすべて bundle exec をつける必要あり
jenkins
jenkinsはシェルスクリプトを書いて対応した
jobのはじめの方だったかな?で以下のようなスクリプト追加
bundle install
bundle exec pod repo update
rm -rf Pods
bundle exec pod install
pod repo update
は別になくても良い気がする
rm -rf Pods
も毎回やるのはエコじゃないけど、やらないとビルド失敗したしたことが過去にあったので、こうしたような気がする
やって良かったよ
これを導入する前は、メンバーの誰かがcocoapodsを更新する度に、
他のメンバーは手元でビルドが通らなくなる状態でした
特にCIのjenkinsが面倒で、わざわざ別の端末にログインしてcocoapodsを更新する必要があった
また、jenkinsでいくつかのiOSプロジェクトのビルドをしていた場合、
すべてのプロジェクトでcocoapodsのバージョンが揃ってないといけなかったので、面倒だった
下手すると他チームとかに迷惑かかったりする
ローカルに閉じて安心だお
ってか逆にこうじゃない運用をやっているところあるのだろうか
これ以外で困らずにやれるやり方あったら知りたい