CircleCI で S3 に iOS アプリの AdHoc ビルドとダウンロードページを作成し、Slack で通知する
長瀬 敦史
先日、CircleCI に CI サービスを変更した 続きで、TODO に残っていた、ビルド番号の同期と Amazon S3 への配信の自動化を設定しました。
ビルド番号の同期
以下のスクリプトで $CIRCLE_BUILD_NUM
とアプリケーションのビルド番号を使って CFBundleVersion
を更新します。
#{Short Version Number}.#{CIRCLE_BUILD_NUM}
のフォーマット、例えば 1.1.0.123
の様なバージョン番号になります。
#!/bin/bash
set -eu
v=`/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "${APPNAME}/Info.plist"`
for f in `ls **/Info.plist`; do
echo $f
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${v}.${CIRCLE_BUILD_NUM}" "$f"
done
Amazon S3 への配信
Amazon S3 へは、AdHoc 用のバイナリ、plist ファイル、ダウンロードページを配信します。
.ipa
バイナリは、前回、既に設定してある AdHoc 用のものを使用します。
DeployGate で設定したのと同じく、shenzhen を使い、.ipa
ファイルのアップロードを行い、
ダウンロードページの生成とアップロードを行う rake
タスクを実行します。
サンプル: https://littleapps-ios-build.s3.amazonaws.com/ngs/ci2go/52/index.html
#!/bin/sh
set -eu
DIST_PATH="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/${CIRCLE_BUILD_NUM}"
bundle exec ipa distribute:s3 \
--file Distribution/AdHoc/${APPNAME}.ipa \
--dsym Distribution/AdHoc/${APPNAME}.app.dSYM.zip \
--access-key-id=$AWS_ACCESS_KEY_ID \
--secret-access-key=$AWS_SECRET_ACCESS_KEY \
--path=$DIST_PATH \
--bucket=$S3_BUCKET \
--acl=public-read \
--region=$AWS_REGION \
--create
bundle exec rake adhoc:upload
rake
タスクで、アップロードが完了したら、ダウンロードページの URL を Slack で通知されます。
環境変数
Name | Description |
---|---|
SLACK_CHANNEL |
通知先の Slack チャンネル |
SLACK_WEBHOOK_URL |
Slack の Webhook URL |
S3_BUCKET |
配布先の S3 バケット |
AWS_ACCESS_KEY_ID |
AWS のアクセスキー ID |
AWS_SECRET_ACCESS_KEY |
AWS のシークレットアクセスキー |
AWS_REGION |
S3 のリージョン |