TravisCIでObjective-Cの時にCocoapodsのバージョンが違うとコンパイルが通らない件

Travis CIを使ってObjective-Cのプロジェクトをコンパイルする時、TravisCI側のCocoapodsのバージョンが0.34.0なんだけどプロジェクトのCocoapodsは0.35.0でコンパイルに失敗していたので、いい感じにできるようにしておいた。ついでに、諸々の処理をRakefileに書き出した。

Rakefile

# coding: utf-8

WORKSPACE_NAME = 'myapp.xcworkspace'

def xctool(task_name, scheme)
  sh("xctool -workspace #{WORKSPACE_NAME} -scheme #{scheme} -sdk iphonesimulator #{task_name}")
end

namespace :cocoapods do
  desc 'Cocoapodsを最新のバージョンに更新します'
  task :upgrade do
    sh('gem install cocoapods -r --no-ri --no-rdoc')
    sh('pod --version')
  end

  desc 'Cocoapodsのライブラリをインストールします'
  task :install do
    sh('pod install')
  end
end

namespace :pullrequest do
  desc 'PullRequest用のテストを実行します。'
  task :test do
    # 通常のスキームでビルドができる
    xctool('build', 'MyApp')
    # テスト用のスキームでテストが通る
    xctool('test', 'MyAppTests')
  end
end

.travis.xml

language: objective-c
cache: cocoapods

before_install:
  - rake cocoapods:upgrade
  - pod --version
script: rake pullrequest:test

branches:
  only:
    - master
    - develop
    - /^(release).*$/

このようにしておくと、最新のCocoapodsを利用できるので便利。でも無駄が多い気がする。


コメントを残す