testflight自動化でらくらくチームテスト

35
TestFlight自動化で らくらくチームテスト 【修正版】 2013/03/03 Retty株式会社 櫻井 洋一郎 (@saku2saku)

Upload: yoichiro-sakurai

Post on 15-Jan-2015

4.053 views

Category:

Technology


3 download

DESCRIPTION

2013/0303

TRANSCRIPT

Page 1: TestFlight自動化でらくらくチームテスト

TestFlight自動化でらくらくチームテスト

【修正版】2013/03/03

Retty株式会社櫻井 洋一郎 (@saku2saku)

Page 2: TestFlight自動化でらくらくチームテスト

iPhone Developer Workshop

iPhoneアプリ開発者の交流

技術情報の交換

比較的初心者の方も多いです

Page 3: TestFlight自動化でらくらくチームテスト

一緒にまったりアプリ開発の勉強をしていきましょう!

src: http://www.pakutaso.com/201201photo118post-1426.html

Page 4: TestFlight自動化でらくらくチームテスト

TestFlight自動化でらくらくチームテスト

Page 5: TestFlight自動化でらくらくチームテスト

自己紹介

名前:櫻井 洋一郎 (@saku2saku)

お仕事:プログラマ(Retty株式会社)    フリーでもやるでよ

趣味:漫画を読みあさる   プログラミング   料理

Page 6: TestFlight自動化でらくらくチームテスト

今までの製作iPhoneアプリ

iPadアプリ

Web

Symfony, Code igniter, WordPress, etc

Page 7: TestFlight自動化でらくらくチームテスト

TestFlightって?アプリのβテストを配布できるサービス

Page 8: TestFlight自動化でらくらくチームテスト

どんなことができるの?

チームメンバーにメール通知

Webサイトからのアプリダウンロード

チームメンバーの状態確認

メール通知済/アプリインストール済/etc

Page 9: TestFlight自動化でらくらくチームテスト

通常の使い方

アカウント作成

プロジェクト作成

メンバー登録

デバイス登録

バイナリ作成

バイナリアップロード

メンバーへのアプリ登録通知

メンバーのアプリダウンロード

Page 10: TestFlight自動化でらくらくチームテスト

問題点バイナリ作成とアップロードが結構めんどい

src: http://www.pakutaso.com/201209photo212post-1772.html

Page 11: TestFlight自動化でらくらくチームテスト

具体的な手順アプリをアーカイブ

アーカイブファイルをipaファイルに

作成されたdSYMファイルをzip化

テストフライトを開く

バイナリアップロード

dSYMファイルのアップロード

配布先ユーザの選択して通知メールを送信

Page 12: TestFlight自動化でらくらくチームテスト

うわっ…、私の手順、多すぎ…?!

src: http://www.pakutaso.com/201203photo114post-1412.html

Page 13: TestFlight自動化でらくらくチームテスト

というわけでこれらを自動化しちゃいましょう

Page 14: TestFlight自動化でらくらくチームテスト

自動化案:Jenkins

CI(Continuation Integration)ツールのひとつ

コミットをフックして、ビルド・テスト・コード標準チェックなどできる

プラグインで機能拡張可能

でも配布だけしたいのであればオーバースペック・・・

Page 15: TestFlight自動化でらくらくチームテスト

Webサーバ

リポジトリサーバ

プラグイン

細かい設定 ・・・

Page 16: TestFlight自動化でらくらくチームテスト

要するに配布手順だけ誰でもできるように自動化したい

Page 17: TestFlight自動化でらくらくチームテスト
Page 18: TestFlight自動化でらくらくチームテスト

スクリプトで1発実行できれば良いよね!

Page 19: TestFlight自動化でらくらくチームテスト

自動化の方法

バイナリのアーカイブ

xcodeのコマンドを使う

アプリのアップロードと配布

TestFlight Upload API

Page 20: TestFlight自動化でらくらくチームテスト

xcode のコマンド

xcodebuild

CleanやBuildを実行します

xcrun

プロビジョニングファイルを指定してipaファイルを作成する

Page 21: TestFlight自動化でらくらくチームテスト

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}"

Page 22: TestFlight自動化でらくらくチームテスト

xcodebuildのパラメータ

${PROJ_FILE_PATH} :.xcodeprojファイルのパス

${SDK}:"iphoneos"固定

${CONFIGURATION}:Build対象のコンフィグ名(Adhoc)

${TARGET_NAME}:Build対象のターゲット名

${OUT_IPA_DIR}:IPAファイル等の出力先フォルダ

Page 23: TestFlight自動化でらくらくチームテスト

xcrun

xcrun -sdk "${SDK}" PackageApplication "${PRODUCT_NAME}" -o "${IPA_FILE_NAME}"

※ -embed "{$PROVISIONING_PATH}" は不要

プロビジョニングファイルは指定したビルド設定のものを見るので指定の必要無しでした m(_ _)m

Page 24: TestFlight自動化でらくらくチームテスト

xcrunのパラメータ

${SDK}:"iphoneos"固定

${PRODUCT_NAME}:出力するappファイル名

${IPA_FILE_NAME}:出力するipaファイル名

Page 25: TestFlight自動化でらくらくチームテスト

TestFlightのコマンド

zip

dSYM ファイルをzip化

curl

コマンドラインでWebAPIをたたく

Page 26: TestFlight自動化でらくらくチームテスト

zip

zip -r $ZIP_DSYM_FILE_NAME $DSYM_DIR_NAME

$ZIP_DSYM_FILE_NAME:zipファイル名

$DSYM_DIR_NAME:dSYMのパッケージパス

Page 27: TestFlight自動化でらくらくチームテスト

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/

Page 28: TestFlight自動化でらくらくチームテスト

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:配布対象者のリスト

Page 29: TestFlight自動化でらくらくチームテスト

各種トークンの確認方法

APIトークンの入手

https://testflightapp.com/account/#api

チームトークンの入手

https://testflightapp.com/dashboard/team/edit/?next=/api/doc/

Page 30: TestFlight自動化でらくらくチームテスト

DISTRIBUTION_LISTSとは?

配布対象のプリセット

People -> Add Distribution List で追加可能

Page 31: TestFlight自動化でらくらくチームテスト

最終成果物

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

Page 32: TestFlight自動化でらくらくチームテスト

ファイルのDL

勉強会公式サイトからDLできます

http://workshop.iphonework.biz/files/2013/03/TestFlight.zip

環境変数をご自身の環境に合わせて変更してください

Page 33: TestFlight自動化でらくらくチームテスト

めんどうな作業をいつ自動化するの?

Page 34: TestFlight自動化でらくらくチームテスト

今でしょ!

Page 35: TestFlight自動化でらくらくチームテスト

ご清聴ありがとうございました