テスト版のIPAデプロイに使い回せる感じのMakefileを書いた

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にアップロードするプラグインもあって、これも良さそう。

https://github.com/shiwano/grunt-testflight