TravisCIからTestFlight/DeployGateにipaをアップロードする

TravisCIからTestFlight/DeployGateにipaをアップロードするには、自分のMacで使ってる証明書をTravisCIに登録しないと出来ない。なので、これから書くことは、TravisCIに証明書を登録する方法みたいな感じです。

僕はTravisでrake実行する感じでやったので、Rakefile置いときます。 https://gist.github.com/gin0606/9970458

準備するもの

  • 証明書一式
    • Worldwide Developer Relations
    • iOS Distribution Certificates
      • .cer.p12
    • adhoc用のiOS Provisioning Profiles
  • 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のMacios-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は試してないです。

参考

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/
このアップデートでTravisMac上でのキーチェーンの扱いが変わったらしく、前までの方法だとcode signができなくなっていた。

参考