TravisCIからTestFlight/DeployGateにipaをアップロードするには、自分のMacで使ってる証明書をTravisCIに登録しないと出来ない。なので、これから書くことは、TravisCIに証明書を登録する方法みたいな感じです。
僕はTravisでrake実行する感じでやったので、Rakefile置いときます。 https://gist.github.com/gin0606/9970458
準備するもの
- 証明書一式
- TestFlight/DeployGateのAPIキー
TravisCIに証明書を登録する
security create-keychain -p travis ios-build.keychain security default-keychain -s ios-build.keychain security unlock-keychain -p travis ios-build.keychain security import ./certificates/AppleWWDRCA.cer -k ~/Library/Keychains/ios-build.keychain -T /usr/bin/codesign security import ./certificates/dist.cer -k ~/Library/Keychains/ios-build.keychain -T /usr/bin/codesign security import ./certificates/dist.p12 -k ~/Library/Keychains/ios-build.keychain -P certificates_pass -T /usr/bin/codesign mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles" cp ./Provisioning_Profile/my_adhoc.mobileprovision "$HOME/Library/MobileDevice/Provisioning Profiles"
TravicのMacにios-build用のキーチェーンを作成してる感じ。 Provisioning Profilesも登録してる。
Publicなリポジトリでやる場合はパスワードとかTravisのビルドログに表示されないようにtravis.rbでPasswordをsecureな環境変数として設定してシェルスクリプトの中で使う感じだといいと思う。
ローカルで実行するときは、同名のキーチェーンがあると実行に失敗するので、ビルド終了時に上で登録したのを消す。
security delete-keychain ios-build.keychain rm "$HOME/Library/MobileDevice/Provisioning Profiles/my_adhoc.mobileprovision"
ipaを作る
xcodebuild -workspace WORKSPACE_PATH -scheme SCHEME.name -sdk SCHEME.sdk -configuration Release CODE_SIGN_IDENTITY='iPhone Distribution' CONFIGURATION_TEMP_DIR=./build_app/tmp CONFIGURATION_BUILD_DIR=./build_app clean build xcrun -sdk SCHEME.sdk PackageApplication ./build_app/APP_SCREEN_NAME -o ./build_app/APP_NAME.ipa -embed "$HOME/Library/MobileDevice/Provisioning Profiles/my_adhoc.mobileprovision" zip -r ./build_app/#{APP_SCREEN_NAME}.dSYM.zip ./build_app/#{APP_SCREEN_NAME}.dSYM
SCHEME.name
, SCHEME.sdk
, APP_SCREEN_NAME
, APP_NAME
は自分のプロジェクトに合わせて変えてください。
TestFlight/DeployGateにアップロードする
あとは各APIに投げるだけ。APIの使い方は公式見てください。ちなみにこの段階だとDeployGateのAPIは試してないです。
参考
- Travis CI for iOS - Build Tools - objc.io issue #6
- ユビレジのiPadアプリのCI環境をJenkinsからTravis CIに移行したときのまとめ - 24/7 twenty-four seven
2014/04/25追記
security default-keychain -s ios-build.keychain security unlock-keychain -p travis ios-build.keychain
証明書登録に上記2行を追加した。
http://blog.travis-ci.com/2014-04-15-xcode-51-ios-71-osx-109/
このアップデートでTravisのMac上でのキーチェーンの扱いが変わったらしく、前までの方法だとcode signができなくなっていた。