概要
Jenkinsを使って、iOSアプリのビルドからHockeyAppへのアップロードを自動化する。
ジョブはスレーブのMacに実行させる。
Gitのリポジトリを監視し、変更があればビルドして、HockeyAppへアップロードする。
今回は Cocos2d-x の iOS アプリをビルドする。
環境
- master
- CentOS 6.6 (Final)
- Jenkins 1.580.1
- slave
- OS X Yosemite 10.10.1
- iOSアプリをビルドできる環境
前提
準備
Git Pluginをインストール
masterのJenkinsにアクセスして、以下を実施する。
- [Jenkinsの管理] > [プラグインの管理] を選択する
- [利用可能] タブを選択し、[フィルター] に [Git Plugin] と入力する
- 一覧の [Git Plugin] をチェックする
- 画面下部の [ダウンロードして再起動後にインストール] を選択する
しばらくして再アクセスすると、プラグインが利用可能になっている。
認証情報を追加する
Git-hubなどにアクセスする際に使用する認証情報を登録する。
- [Jenkinsの管理] > [認証情報の管理] を選択する
- [認証情報の追加] > [SSHユーザ名と秘密鍵] を選択する
- [ユーザ名][説明]を入力し、[秘密鍵]を要件に合わせて選択して入力する
- 画面下部の [保存] を選択する
iOSのプロビジョニングプロフィールのUUIDを確認する
$ cd ~/Library/MobileDevice/Provisioning Profiles
$ ls -l
一覧のファイル名からあたりをつける。
ジョブを作成する
ジョブを追加
- [新規ジョブ作成] を選択する
- ジョブ名に空白は含まないようにする
- [フリースタイル・プロジェクトのビルド] を選択
古いビルドの破棄
実行するノードを制限
ソースコード管理
- Git-hubやbitbucketのリポジトリのURLを設定する
- Credentialsは追加した認証情報を選択する
ビルド・トリガ
- 15分に一回確認する
ビルド手順を追加する
[ビルド手順の追加] > [シェルの実行] を選択して、以下コマンドを実行する。
環境のクリア
# git clean
git clean -f -d
git checkout -- .
# clean
rm -rf bin/
# xcode clean
xcodebuild \
-project "${WORKSPACE}/proj.ios_mac/置き換える.xcodeproj" \
-configuration Release \
-target "置き換える" \
-sdk iphoneos8.1 \
CONFIGURATION_BUILD_DIR="${WORKSPACE}/bin/release/ios" \
clean
ビルド
xcodebuild \
-project "${WORKSPACE}/proj.ios_mac/置き換える.xcodeproj" \
-configuration Release \
-target "置き換える" \
-sdk iphoneos8.1 \
CONFIGURATION_BUILD_DIR="${WORKSPACE}/bin/release/ios" \
PROVISIONING_PROFILE="置き換える" \
CODE_SIGN_IDENTITY="iPhone Distribution: 置き換える"
リネームと圧縮
pushd bin/release/ios
mv "置き換える iOS.app" "置き換える.app"
mv "置き換える iOS.app.dSYM" "置き換える.app.dSYM"
zip -9r "置き換える.app.dSYM.zip" "置き換える.app.dSYM"
popd
ipaファイルを作成
xcrun \
-sdk iphoneos8.1 \
PackageApplication \
-v "${WORKSPACE}/bin/release/ios/置き換える.app" \
-o "${WORKSPACE}/bin/release/ios/置き換える.ipa"
HockeyAppにアップロード
curl \
-F "status=2" \
-F "notify=0" \
-F "notes=Some new features and fixed bugs." \
-F "notes_type=0" \
-F "ipa=@bin/release/ios/置き換える.ipa" \
-F "dsym=@bin/release/ios/置き換える.app.dSYM.zip" \
-H "X-HockeyAppToken: 置き換える" \
https://rink.hockeyapp.net/api/2/apps/置き換える/app_versions/upload
- API
- X-HockeyAppToken
- HockeyApp > Manage Account > API Tokens で作成する
- URL内の識別ID
- 登録されたアプリのページに表示してある