iOSのプロジェクトをJenkinsでビルドする
情報がまとまっていなくて苦労したので書いておく。やってしまえば簡単。
やりたいこと
やらないこと
- 自動でベータ版としてベータテスターに配布する
- 自動でiTunes Connectにサブミットする
証明書をインストールする
Distribution用の証明書と鍵をインストールしておく。インストールするキーチェーンを「ログイン」ではなく、「システム」にしてしまうと、キーチェーンのアンロックを考えずにすむので楽。
あ、もしかしたら「キーチェーン使っても良いん??」って聞かれるような気がするので、あらかじめ下のxcodebuildを一回実行しておくと良いのかも。常に許可するように設定すれば良い。
ビルドする
xcodebuildコマンドを使う。こんな感じ。
$ cd ${WORKSPACE} $ rm -f /Users/jenkins/Library/MobileDevice/Provisioning\ Profiles/* $ cp *.mobileprovision /Users/jenkins/Library/MobileDevice/Provisioning\ Profiles/ $ rm -rf build $ xcodebuild -project Ubiregi2.xcodeproj/ -target Ubiregi2 -configuration Release CODE_SIGN_IDENTITY="iPhone Distribution: Ubiregi Inc." build
最初のほうのrmとcpがちょっとポイント。プロビジョニングファイルはXcodeに登録しておく必要があるが、gitリポジトリ経由で更新したいので、あらかじめ登録しておくのは良くない。そこで、Xcodeがプロビジョニングプロファイルを探すディレクトリに、直接コピーする戦略を取る。
rmで空にするのは、確実にgitリポジトリ経由でコピーしたプロビジョニングプロファイルを使用させるため。
あとはコピーすれば更新される。
IPAにパッケージする
xcrunコマンドを使う。
$ xcrun -sdk iphoneos PackageApplication --embed TestFlight_Ubiregi.mobileprovision build/Release-iphoneos/Ubiregi2.app -o ${WORKSPACE}/build/Ubiregi2.ipa
--embedを使って、プロビジョニングプロファイルを埋め込まないと、TestFlightできない。さらに、TestFlightするためには、ビルドのときに使ったプロファイルを同じものをembedしないといけない。
このときに--signし直す方法もあるみたいだけど、なんか上手くいかなかった。とりあえずこれで動いてるから良いことにしている。