Xcode上でアーカイブビルドは手動できてそろそろTestFlightに上げつつ配布みたいな段階になった時に、プロジェクトごとにそんなに設定変更せずに雛形として使えるMakefileを用意しておいた。
https://gist.github.com/laiso/8537660
### TestFlight ### API_TOKEN="YOUR_TESTFLIGHT_API_TOKEN" TEAM_TOKEN="YOUR_TESTFLIGHT_TEAM_TOKEN" MEMBER_LISTS="YOUR_TESTFLIGHT_MEMBER_LIST_NAMES,OTHER_LIST_NAME,..." CONFIGURATION="Release" SCHEME_NAME=$(shell basename *.xcodeproj .xcodeproj) all: archive archive: ipa build -s ${SCHEME_NAME} -c ${CONFIGURATION} -d "build" testflight: archive ipa distribute:testflight -f "build/${SCHEME_NAME}.ipa" -a ${API_TOKEN} -T ${TEAM_TOKEN} -l ${MEMBER_LISTS} clean: rm -f build/*.ipa build/*.app.dSYM.zip
curl -o Makefile https://gist.github.com/laiso/8537660/raw/TestFlight.make
make testflight 実行するとエディタが立ち上がり更新メモを入力して、保存したらそのままアップロードする。
上3つは環境ごとに固有の値なので開発者が入れる必要がある。一旦入れたら非公開リポジトリに含めて開発者間で共有してもよさそう。
- API_TOKEN
- https://testflightapp.com/account/#api
- TEAM_TOKEN
- https://testflightapp.com/dashboard/team/edit/
- MEMBER_LISTS
- https://testflightapp.com/dashboard/team/ からDistribution Lists を自分で追加して。コンマ区切りで複数指定できる。
その場でエディタ開かずにsilentに実行して全自動化したい場合はipa distributeに-m引数でなんかメッセージつければいい(コミットログからChangelogを生成するとか)。
ところでipaコマンドの実体はshenzhenというツールです。shenzhenはいわゆるmatttウェアで、コマンドラインビルド時に便利な感じのやつです。
gem install shenzhen
shenzhenの機能だけどTestFlight以外にも対応できる
ipa -h distribute:ftp Distribute an .ipa file over FTP distribute:hockeyapp Distribute an .ipa file over HockeyApp distribute:s3 Distribute an .ipa file over Amazon S3 distribute:testflight Distribute an .ipa file over testflight distribute:sftp distribute:ftp --protocol sftp
全然余談だけどGruntでTestFlightにアップロードするプラグインもあって、これも良さそう。