testflight自動化でらくらくチームテスト
DESCRIPTION
2013/0303TRANSCRIPT
TestFlight自動化でらくらくチームテスト
【修正版】2013/03/03
Retty株式会社櫻井 洋一郎 (@saku2saku)
iPhone Developer Workshop
iPhoneアプリ開発者の交流
技術情報の交換
比較的初心者の方も多いです
一緒にまったりアプリ開発の勉強をしていきましょう!
src: http://www.pakutaso.com/201201photo118post-1426.html
TestFlight自動化でらくらくチームテスト
自己紹介
名前:櫻井 洋一郎 (@saku2saku)
お仕事:プログラマ(Retty株式会社) フリーでもやるでよ
趣味:漫画を読みあさる プログラミング 料理
今までの製作iPhoneアプリ
iPadアプリ
Web
Symfony, Code igniter, WordPress, etc
TestFlightって?アプリのβテストを配布できるサービス
どんなことができるの?
チームメンバーにメール通知
Webサイトからのアプリダウンロード
チームメンバーの状態確認
メール通知済/アプリインストール済/etc
通常の使い方
アカウント作成
プロジェクト作成
メンバー登録
デバイス登録
バイナリ作成
バイナリアップロード
メンバーへのアプリ登録通知
メンバーのアプリダウンロード
問題点バイナリ作成とアップロードが結構めんどい
src: http://www.pakutaso.com/201209photo212post-1772.html
具体的な手順アプリをアーカイブ
アーカイブファイルをipaファイルに
作成されたdSYMファイルをzip化
テストフライトを開く
バイナリアップロード
dSYMファイルのアップロード
配布先ユーザの選択して通知メールを送信
うわっ…、私の手順、多すぎ…?!
src: http://www.pakutaso.com/201203photo114post-1412.html
というわけでこれらを自動化しちゃいましょう
自動化案:Jenkins
CI(Continuation Integration)ツールのひとつ
コミットをフックして、ビルド・テスト・コード標準チェックなどできる
プラグインで機能拡張可能
でも配布だけしたいのであればオーバースペック・・・
Webサーバ
リポジトリサーバ
プラグイン
細かい設定 ・・・
要するに配布手順だけ誰でもできるように自動化したい
スクリプトで1発実行できれば良いよね!
自動化の方法
バイナリのアーカイブ
xcodeのコマンドを使う
アプリのアップロードと配布
TestFlight Upload API
xcode のコマンド
xcodebuild
CleanやBuildを実行します
xcrun
プロビジョニングファイルを指定してipaファイルを作成する
xcodebuild
Clean
xcodebuild clean -project "${PROJ_FILE_PATH}"
Build
xcodebuild -project "${PROJ_FILE_PATH}" -sdk "${SDK}" -configuration "${CONFIGURATION}" -target "${TARGET_NAME}" CONFIGURATION_BUILD_DIR="${OUT_IPA_DIR}"
xcodebuildのパラメータ
${PROJ_FILE_PATH} :.xcodeprojファイルのパス
${SDK}:"iphoneos"固定
${CONFIGURATION}:Build対象のコンフィグ名(Adhoc)
${TARGET_NAME}:Build対象のターゲット名
${OUT_IPA_DIR}:IPAファイル等の出力先フォルダ
xcrun
xcrun -sdk "${SDK}" PackageApplication "${PRODUCT_NAME}" -o "${IPA_FILE_NAME}"
※ -embed "{$PROVISIONING_PATH}" は不要
プロビジョニングファイルは指定したビルド設定のものを見るので指定の必要無しでした m(_ _)m
xcrunのパラメータ
${SDK}:"iphoneos"固定
${PRODUCT_NAME}:出力するappファイル名
${IPA_FILE_NAME}:出力するipaファイル名
TestFlightのコマンド
zip
dSYM ファイルをzip化
curl
コマンドラインでWebAPIをたたく
zip
zip -r $ZIP_DSYM_FILE_NAME $DSYM_DIR_NAME
$ZIP_DSYM_FILE_NAME:zipファイル名
$DSYM_DIR_NAME:dSYMのパッケージパス
curl
curl http://testflightapp.com/api/builds.json \ -F file=@$IPA_FILE_NAME \ -F dsym=@$ZIP_DSYM_FILE_NAME \ -F api_token='api token' \ -F team_token='team token' \ -F notes="$NOTES" \ -F notify="$NOTIFY" \ -F distribution_lists="$DISTRIBUTION_LISTS"
https://testflightapp.com/api/doc/
TestFlight Upload APIのパラメータ
$IPA_FILE_NAME:IPAファイルのパス
@$ZIP_DSYM_FILE_NAME:dSYMのzipファイルのパス
'api token':TestFlightのAPIトークン
'team token':TestFlightのteamトークン
$NOTES:TestFlightで通知するメールの本文 (True / False)
$NOTIFY:テストバイナリの配布通知メールを送るかのフラグ
$DISTRIBUTION_LISTS:配布対象者のリスト
各種トークンの確認方法
APIトークンの入手
https://testflightapp.com/account/#api
チームトークンの入手
https://testflightapp.com/dashboard/team/edit/?next=/api/doc/
DISTRIBUTION_LISTSとは?
配布対象のプリセット
People -> Add Distribution List で追加可能
最終成果物
TestFlight.sh
usage: TestFlight.sh -m message [-h] [-l lists] [-e env] [-n need notify]-m: TestFlight message-h: show command help-l: developer lists (developer[default])-e: build envirionment (Adhoc[default])-n: need notify(True[default] / False)ex) sh TestFlight.sh -m "test message" -l team -e Adhoc -n False
ファイルのDL
勉強会公式サイトからDLできます
http://workshop.iphonework.biz/files/2013/03/TestFlight.zip
環境変数をご自身の環境に合わせて変更してください
めんどうな作業をいつ自動化するの?
今でしょ!
ご清聴ありがとうございました