Travis CI で iOS のライブラリを動かしたメモ

By | 2013年4月19日

XCode4.6 で TEST_AFTER_BUILD を使って xcodebuild を実行時にテストを実行するようにするまで」でテストが xcodebuild で動くようになったので、それを Travis CI で動かそうと思います。

追記 2013-04-21 16:01:01

どうやら Travis CI の VM にバグがあったみたいで以下の方法が必要になっていたみたいです。
既に修正されてるみたいなので before_install のブロックはいらなくなっています。
というかこの記事をみずに「XCode4.6 で TEST_AFTER_BUILD を使って xcodebuild を実行時にテストを実行するようにするまで」のとおりで動きます。

詳細はここ

なのでバグがあった際はこうすれば動いていたよというログが以下となります。

追記おわり

基本的には「iOSのライブラリにTravis CIを導入する」に書かれている通りで当初問題なく動いていたのですが、何度か動かしている間に動かなくなってしまいました。

原因としては初期化の際に rvm が使用されるようになって cocopods がみつからなくて失敗していました。以下のように .travis.yml を書けば解決しました。重要なのが before_install のブロックです。

.travis.yml

language: objective-c
 
before_install:
 - gem install cocoapods -r
 - pod setup
 
script: make test

下の画像は Travis Ci でビルドに失敗したログです。

travis-ci/travis-build/example を見るとbuild_objective_c.* は全て rvm が使われてるみたいなので ISRefreshControl もこけそうなんですけど、なぜだかはよくわかりません。 #6 までは必要なくテストが動いているんですけどね。

これらを見て before_install がフックされる時には rvm default ~ が実行された後なので、
before_install で cocoapods をインストールしてやれば解決しました。

cocoapods が見つからないとエラーが表示されて Travis CI でこける人は試してみてください。

/Library/Ruby/Site/1.8/rubygems/dependency.rb:247:in `to_specs': Could not find cocoapods (>= 0) amongst [bundler-1.3.5, rake-10.0.4, rubygems-bundler-1.1.1, rvm-1.11.3.7] (Gem::LoadError)
    from /Library/Ruby/Site/1.8/rubygems/dependency.rb:256:in `to_spec'
    from /Library/Ruby/Site/1.8/rubygems.rb:1231:in `gem'
    from /usr/bin/pod:22
The command "pod install" failed and exited with 1 during install.

Travis CI で動くようになるまでの差分です。

これで安心して push 時に CI がまわるようになりました。
おしまいおしまい。