iOSアプリのArchive→Export→Deploygateにuploadを自動化


自動化したかった作業

iOSアプリのよくある配布フローとして、Archiveから、development(adhocではない)で署名したipaを作成し、Deploygateにアップロードして、配布しているのですが、この作業のビルド待ち時間と、ちょっとした手作業に萎えていました。

bashで自動化する

今回はbashスクリプトを作成しました。

必要なツール

  • Xcode Command Line Tools
  • deploygate command line tool

スクリプトを用意

create-ipa.sh
#!/bin/bash

# 作業ディレクトリ作成
mkdir build

# CleanしてArchive作成
xcodebuild -workspace hogehoge.xcworkspace \
    -scheme hogehoge \
    -configuration Release \
    clean archive \
    -archivePath ./build/build

# Exportしてipa作成
xcodebuild -exportArchive \
-archivePath ./build/build.xcarchive \
-exportPath ./build \
-exportOptionsPlist exportOptions.plist

# Deploygateにupload
if (( $# >  0   )); then 
   dg deploy ./build/iotwest-ios.ipa --message "$1"
else
   dg deploy ./build/iotwest-ios.ipa
fi

Exportでのオプションファイルを用意

exportOptions.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>compileBitcode</key>
    <false/>
    <key>method</key>
    <string>development</string>
    <key>signingStyle</key>
    <string>automatic</string>
    <key>stripSwiftSymbols</key>
    <true/>
    <key>teamID</key>
    <string>XXXXXXXX</string>
    <key>thinning</key>
    <string>&lt;none&gt;</string>
</dict>
</plist>

各ファイルの詳細は以下を参照してください

ファイル構成

詳細は省きますが、以下のファイルを同じフォルダに配置します。
create-ipa.sh、exportOptions.plist、hogehoge.xcworkspace

bash実行

あとはターミナルからスクリプトを実行するだけ

 ./create-ipa.sh test
# testはメッセージです

処理が完了したら、Deploygateにuploadされました〜。

これで毎回の手作業から解放されました。

ありがとうございました!