毎日毎日、コードを書きまくっているdommyです。
iPhoneもAndroidも書いてるんですが、ビルドって時間掛かりますよね?
しかも、アプリってリリースからバージョンアップまでのサイクルが短い。
直してはテスト、直してはテスト。もううんざりです。
ってな訳でCIサーバを用意してみました。
今回はiPhoneのアプリビルド方法を書きます。
環境
プロジェクト管理はこんな感じで行なっていると考えてください。あくまで理想です、理想。
JenkinsからデバイスへはTestFlight的な何かを入れたいんですけどね。
まぁ、ipaとかそのままインストール出来るんで問題ないんですけど。
で、JenkinsでiPhone用プロジェクトを作成しますが、
Shellでipaまで作成します。
ビルドスクリプト
いろいろJenkinsの設定をして、ビルドのところにシェルスクリプトを書いきます。Xcodeのビルドも出来るのですが、ローカルで出来るか実行してからJenkinsに移しているので、
スクリプトをそのまま書いちゃってます。
#!/bin/sh
####################################################
# author dommy
# created 2012-11-14
# Jenkins Build Script for Sample iOS App
####################################################
# Environment Variables
SDK="iphoneos"
# change these by environment
SRCROOT=${WORKSPACE}
PROVISIONING_ID="243F24-2233F-39C2-AEDD-192FE93B3"
USER_HOME="/Users/jenkins"
KEYCHAIN_PASSWORD="keychain password"
PROVISIONING_PATH="${USER_HOME}/Library/MobileDevice/Provisioning Profiles/${PROVISIONING_ID}.mobileprovision"
KEYCHAIN_PATH="${USER_HOME}/Library/Keychains/login.keychain"
PROJECT_NAME="SampleApp"
CODE_SIGN_IDENTITY="iPhone Developer: dommy!"
# crean up old artifacts
rm -rf "${SRCROOT}/artifacts"
security list-keychains -s ${KEYCHAIN_PATH}
security default-keychain -s ${KEYCHAIN_PATH}
security unlock-keychain -p ${KEYCHAIN_PASSWORD} ${KEYCHAIN_PATH}
########## BUILD with DEBUG CONFIGURATION ##########
# Environment Variables
CONFIGURATION="Debug"
OUTPUT_APP_DIR="${SRCROOT}/artifacts/${CONFIGURATION}/app"
OUTPUT_IPA_DIR="${SRCROOT}/artifacts/${CONFIGURATION}/ipa"
# create output directory
mkdir -p $OUTPUT_APP_DIR
mkdir -p $OUTPUT_IPA_DIR
# build project. creating .app file
xcodebuild -project ${PROJECT_NAME}.xcodeproj -sdk "${SDK}" -configuration ${CONFIGURATION} -target ${PROJECT_NAME} clean build install DSTROOT="${OUTPUT_APP_DIR}"
# create .ipa file
xcrun -sdk "${SDK}" PackageApplication "${OUTPUT_APP_DIR}/Applications/${PROJECT_NAME}.app" -o "${OUTPUT_IPA_DIR}/${PROJECT_NAME}.ipa" --sign "${CODE_SIGN_IDENTITY}" --embed "${PROVISIONING_PATH}"
と、こんな感じでビルドスクリプトを書いて、"Build Now"
すると、workspaceに.ipaファイルが出来ますので、それをインストールしてダウンロード。
ホントはここをOTAにしたいところですが、まだ先の話。
(いずれはします。)
で、これを書いたのでは、User Interaction is not allowedってエラーが起きて、
解決方法を書いておきたかったからなのですが、
それはまた次回書きます。


0 件のコメント:
コメントを投稿