LoginSignup
13
9

More than 5 years have passed since last update.

cocoapodsのバージョン管理のやり方

Posted at

iOSアプリを複数人で開発するときに、メンバーのcocoapodsのバージョンが合わずに困ったことがあったので、
bundlerを使ってバージョンを合わせました
というメモです
CIで別の端末でjenkinsも使っていたので、そいつもバージョン揃ってハッピーになれた :sushi:

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のバージョンが揃ってないといけなかったので、面倒だった
下手すると他チームとかに迷惑かかったりする
ローカルに閉じて安心だお :anguished:

ってか逆にこうじゃない運用をやっているところあるのだろうか
これ以外で困らずにやれるやり方あったら知りたい :beer:

13
9
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
13
9