LoginSignup
30
30

More than 5 years have passed since last update.

TravisCIでiOSアプリのipaファイルを作って実機に配信する時に便利だったもの

Last updated at Posted at 2015-01-15

TravisCIを使ってCI(継続的インテグレーション)の環境を構築しようとしたけれど、ググっても手順がやや複雑で環境構築が大変そうに見えた。色々自動化できないか探してみると、iOS開発に大変便利なツール群が見つかった。それらを使って環境構築すると、イイ感じに構築できたのでメモ。

大変参考になる文献

TravisCIと一緒に利用して便利だったもの

  • Rakefile
  • xctool
  • nomad-cli

Rakefile

  • http://docs.ruby-lang.org/ja/2.1.0/library/rake.html
  • TravisCIに標準でインストール済み
  • Rakefileを使ってscript: rake myapp:testというように書いておくとシェルスクリプトを書くよりも楽に書ける部分がある
    • 特にブランチ名で処理を分けたい時にRubyの正規表現が使えるので楽
    • すべてをRakefileにしようとせず、シェルスクリプトの呼び出しをshメソッドを使うようにすると便利

facebook/xctoolを利用する

  • https://github.com/facebook/xctool
  • TravisCIに標準でインストール済み(というか普通に設定するとxctoolを使ってテストが実行される
  • 以下のようにシェルスクリプトに書いておいて環境変数でWORKSPACE_NAMEとかを設定すると後々他のプロジェクトでも使い回したりできて楽
    • ビルドを実行
      • xctool -workspace ${WORKSPACE_NAME} -scheme ${BUILD_SCHEME} -configuration ${CONFIGURATION} -sdk iphonesimulator build
    • テストを実行
      • xctool -workspace ${WORKSPACE_NAME} -scheme ${TEST_SCHEME} -configuration ${CONFIGURATION} -sdk iphonesimulator test

nomad-cliを使う

  • http://nomad-cli.com/
  • AFNetworkingでおなじみmatttさんが作った便利ツール群
  • TravisCIに標準で入ってるっぽいことが公式ブログの記事で書かれているが、利用できなかったのでbefore_installにnomad-cliを追記した
    • before_install: gem install cupertino shenzhen --no-ri --no-rdoc
  • iOSの証明書やプロビジョニングプロファイルをダウンロードできる「Cupertino」、ipaファイルをビルド・配布する「Shenzen」などで構成されている
  • Cupertino
    • Provisioning Profileをダウンロードして名前を環境変数PROVISIONING_FILE_NAMEに代入
      • PROVISIONING_FILE_NAME=ios profiles:download -u "${IOS_DEV_EMAIL}" -p "${IOS_DEV_PASSWORD}" "${IOS_DEV_PROVISIONING_NAME}" | sed -e "s/Successfully downloaded: '\(.*\)'/\1/g"
      • ここを自動化できると、デバイスを追加してもProvisioning Profileをアップロードし直したりしなくて済むので楽
  • Shenzen
    • ipaファイルを生成する
      • ipa build --configuration ${BUILD_CONFIG} --scheme #{SCHEME} CODE_SIGN_IDENTITY='iPhone Developer'
    • Deploygateで配信する
      • ipa distribute:deploygate --api_token #{DEPLOYGATE_API_TOKEN} --user_name #{DEPLOYGATE_USER_NAME}
    • ShenzenのREADMEにも書いてあるように、TestFlightやDeploygateの配信が超簡単になる
    • TestFlight, HockeyApp, Crashlytics, Deploygateによる配布、FTP, SFTP, Amazon S3による保存、iTunes Connectへのバイナリ提出などが自動化できる(最高だ!)

その他

自分のブログに書いた記事なのですが、他にもTipsがあったらお聞きしたいと思ってQiitaにも貼りました。

30
30
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
30
30