コマンドラインからiOSアプリをビルドする

JenkinsのXCode Pluginが便利なのですが、中で何をやっているか気になったので調べたところ、
普通にコマンドラインからビルドを実行していただけなので、 使っているコマンドをまとめました。

なお、以下のサンプルプロジェクトを使って確認しました。
CustomHTTPProtocol

/usr/bin/agvtool

バージョンを設定する

/usr/bin/agvtool new-version -all (VERSION_NUMBER)
xcodeのプロジェクト設定の、build部分(CFBundleVersion)を変更できます。

バージョンを確認する

/usr/bin/agvtool mvers -terse アプリのバージョン番号を確認出来ます。
プロジェクト設定のVersionの部分ですね。
(mversはmarketing-versionの略です)

使える証明書を確認する

/usr/bin/security find-identity -p codesigning -v
  1) ABCDEFGHIJKLMNOPQRSTUVWXYZ(識別子) "iPhone Developer: ota42y (XXXXXXXX識別子)"
     1 valid identities found

このコンピュータで使えるcodesigningの一覧が取れます。

/usr/bin/xcodebuild

使えるSDKを確認する

/usr/bin/xcodebuild -showsdks
OS X SDKs:
        OS X 10.8                       -sdk macosx10.8
        OS X 10.9                       -sdk macosx10.9

iOS SDKs:
        iOS 7.1                         -sdk iphoneos7.1

iOS Simulator SDKs:
        Simulator - iOS 6.1             -sdk iphonesimulator6.1
        Simulator - iOS 7.1             -sdk iphonesimulator7.1

使えるSDK一覧が表示されます。

ビルド設定を表示する

/usr/bin/xcodebuild -list

プロジェクトで使えるビルド設定一覧と デフォルトで何が有効になっているかを表示できます。

Information about project "CustomHTTPProtocol":
    Targets:
        CustomHTTPProtocol

    Build Configurations:
        Debug
        Release

    If no build configuration is specified and -scheme is not passed then "Release" is used.

    Schemes:
        CustomHTTPProtocol

ビルドする

/usr/bin/xcodebuild -target CustomHTTPProtocol -configuration Debug build CONFIGURATION_BUILD_DIR=./app
でビルドを実行できます。
target、configurationを指定し、appディレクトリにappファイルとdSYMファイルを作成します。

appを署名してipaファイルにする

/usr/bin/xcrun -sdk iphoneos PackageApplication -v (appファイルへのフルパス) -o (保存するipaファイルのフルパス)
何故か相対パスだとうまくいきませんでした