iPhoneアプリをmakeコマンド一発でビルドしてDeployGateで自動配布する方法


---------------------
2014/04/23追記
[別記事にshenzhenでipaファイル作成する方法を書きました。](http://qiita.com/k_kinukawa/items/8718aba35060cf838ffa)
↑のほうが簡単です。

---------------------

DeployGateでiOSアプリを配布できるようになりましたが、配布の度にGUIからちまちまアーカイブするのはだるいです。
だるくて仕事やる気がなくなりSNSをダラダラ眺めていたら、[make adhocだけで.ipaをサッと作る](http://blog.ishkawa.org/blog/2013/02/27/make-ipa/)という記事が流れてきたのでDeployGateで配布するところまで出来るようにしてみました。

まず、AdHoc配布用にプロビジョニングプロファイルを作成します。
iOS Developer CenterのCertificates, Identifiers & Profilesから、
[Provisioning Profiles] > [Distribution]でAd Hocのプロビジョニングプロファイルを作成してください。
作成したらダウンロードします。
ダウンロードしたhoge.mobileprovisionは、~/Library/MobileDevice/Provisioning\ Profiles/に放り込んでおきます。

次に、Makefileを作成します。
Makefileの作り方は参考にしたページほぼそのままです。
自分の場合、こんな感じになりました。
プロジェクト名がhogeの場合、

```bash:Makefile
default:
        xcodebuild -sdk iphoneos -target hoge -configuration Release build

adhoc:
        if [ -a build]; then rm -R build; fi;
        xcodebuild -sdk iphoneos -target hoge -configuration Release clean build CODE_SIGN_IDENTITY="iPhone Distribution" PROVISIONING_PROFILE="12345678-FFFF-0000-9999-012345678901"
        xcrun -sdk iphoneos PackageApplication build/Release-iphoneos/hoge.app -o $(PWD)/build/hoge.ipa --embed hoge.mobileprovision
        dgate push k_kinukawa build/hoge.ipa
```

になります。

PROVISIONING_PROFILE=に続く文字列は、hoge.mobileprovisionをテキストエディタで開き、UUIDという項目をコピペします。

```xml:hoge.mobileprovision
<key>UUID</key>
<string>12345678-FFFF-0000-9999-012345678901</string>
```

UUIDを指定した.mobileprovisionが~/Library/MobileDevice/Provisioning\ Profiles/に存在しないと、ビルド時にエラーが出ます。

```bash
Check dependencies
Code Sign error: No matching provisioning profile found: Your build settings specify a provisioning profile with the UUID “12345678-FFFF-0000-9999-012345678901”, however, no such provisioning profile was found.
CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 7.0'

** BUILD FAILED **


The following build commands failed:
	Check dependencies
(1 failure)
make: *** [adhoc] Error 65
```

最後の一行でDeployGateにipaファイルを投げています。
[DeployGateでプロジェクトは作成しておいてください。](http://qiita.com/k_kinukawa/items/bbb3e98239e51fc3c803)
[dgateコマンドをインストール](https://deploygate.com/docs)しておく必要があります。

```bash
#macの場合
$curl https://deploygate.com/install.sh | /bin/sh
```



これでmake adhocすればビルド後にアーカイブ、DeployGateへ送信して自動配布、までが1コマンドで実行できるようになりました。

```bash
$ make adhoc
if [ -a build]; then rm -R build; fi;
/bin/sh: line 0: [: missing `]'
xcodebuild -sdk iphoneos -target hoge -configuration Release clean build CODE_SIGN_IDENTITY="iPhone Distribution" PROVISIONING_PROFILE="12345678-FFFF-0000-9999-012345678901"
Build settings from command line:
    CODE_SIGN_IDENTITY = iPhone Distribution
    PROVISIONING_PROFILE = 12345678-FFFF-0000-9999-012345678901
    SDKROOT = iphoneos7.0

=== CLEAN TARGET hoge OF PROJECT hoge WITH CONFIGURATION Release ===
....
....
....
** BUILD SUCCEEDED **

xcrun -sdk iphoneos PackageApplication build/Release-iphoneos/hoge.app -o /Users/kenji.kinukawa/hoge/build/hoge.ipa --embed hoge.mobileprovision
dgate push k_kinukawa build/hoge.ipa
Push app file successful!

Name :		hoge
Owner :		k_kinukawa
Package :	com.kkinukawa.hoge
Revision :	3
URL :		https://deploygate.com/users/k_kinukawa/apps/com.kkinukawa.hoge?key=****************************************
```

jenkinsと組み合わせると更に便利そうですね！