macOSアプリのCI事情7 – deliverでpkgファイルをiTunes Connectにアップロードする

iTunes Connectにアップロード可能なpkgファイルをコマンドラインから作れるようになったら、今度はそのpkgファイルをコマンドラインからiTunes Connectにアップロードしてみよう。
追記2016.12.29: 最新版では、コマンドラインで実行する場合は-j osxオプションをつけないと正しく動作しないようです。
https://github.com/fastlane/fastlane/issues/7480
追記2016.12.23: 2016年12月23日現在、deliverでmacOS appのアップロードをしようとすると、Could not find app with app identifier ‘*’ in your iTunes Connect accountというエラーが発生してしまい、アップロードできなくなっているようです。メンテナンスの案内の影響?

アップロードする前に、ビルド番号をインクリメントしてpkgを作り直す

先のステップでApplication Loaderを使ってアップロードしたpkgをそのまま使うことはできない。同じビルド番号のビルドをiTunes Connectにアップロードすることができないからだ。ビルド番号をインクリメント(ここでは、とりあえずXcodeを開いてそこで変えておけば良い)したら、xcodebuildを使ってpkgを作り直そう。

xcodebuild -workspace image-concat.xcworkspace -scheme Tunacan clean archive -archivePath build/archive002.xcarchive | xcpretty
xcodebuild -exportArchive -archivePath build/archive002.xcarchive -exportPath build/pkg002 -exportOptionsPlist export-options.plist

コマンドラインからiTunes Connectにアップロードするための公式な手段はない

iOSのipa同様、pkgファイルをコマンドラインからiTunes Connectにアップロードする公式のツールやAPIは用意されていない。しかし、一部のサードパーティツールを使うと、無理矢理コマンドラインからアップロードすることができる。今回は、deliverというツールを使う。

deliverのインストール

deliverはrubygemsからインストールする。

(sudo) gem install deliver

deliverをインストールしたら、プロジェクトのディレクトリに移動してTerminalからdeliver initコマンドを叩く。

deliver init

iTunes ConnectにログインするためのApple ID/パスワードの入力を求められる。その際、入力するApple IDの権限に注意が必要だ。普段開発・リリースに使っている全ての権限を持っているApple IDを登録してしまうと、万が一設定を間違えたりした時にアプリが勝手にリリースされてしまったり、予想外の出来事が起きてしまう可能性があるからだ。また、のちにJenkinsやBitriseなどのCIツール/サービスを使って、チームで運用していくようなことを考えても、フルの権限を持ったアカウントを登録するのは避けたい。基本的には「役割」でビルドのアップロードに必要な最小限の権限のみをもたせたiTunes Connectユーザを作って、使った方が安全だ。
Apple IDと、Bundle ID、必要に応じてTeamを選択すると、Deliverfileという設定ファイルが作成され、また現在のiTunes Connect上にアップロードされているリソースがローカルにダウンロードされる。
設定ファイルを作ったら、以降はdeliverコマンドを使ってiTunes Connectにpkgファイルをアップロードできるようになる。

deliver --pkg build/pkg002/Tunacan.pkg --skip_screenshots --skip_metadata -j osx

–pkgオプションで、先ほど生成したpkgファイルのパスを指定する。deliverを使うと、pkgのアップロード以外にもメタデータ(説明文とか)やスクリーンショットのアップロードなども可能なのだが、長くなるので一旦ここでは–skip_screenshot, –skip_metadataを指定して省略する。
upload done
アップロードに成功したら、iTunes Connect上で正しくバイナリが処理されているか確認する。

うまくいかなかった場合

うまくいかなかった場合は、下記のことを調べる。

  1. まずは、iTunes Connect上に表示されているエラーメッセージの内容・指示を確認すること。
  2. 使用したpkgファイルをApplication Loaderを使ってアップロードしてみる。ここで失敗する場合は、pkgの生成の段階で何かしら問題が出ている。
    1. ビルド番号、バージョン番号が正しいかを確認する。特にビルド番号は、すでに同じビルド番号を過去にアップロードしているとエラーになるため、毎回インクリメントし直すこと。
    2. プロビジョニングの設定が正しいかを確認する。
  3. pkgの生成までをXcodeで行い、そのpkgをdeliverを使ってアップロードしてみる。ここで失敗する場合は、deliver・iTunes Connect関連の問題の可能性が高い。
    1. deliverはサードパーティツールのため、XcodeやiTunes Connectの仕様変更によって、deliverで正しくアップロードできなくなっている可能性もある。その場合は、deliver, Xcodeを最新版にしてみたり、あるいはgithubのissuesを確認してみると良い。
Pocket

「macOSアプリのCI事情7 – deliverでpkgファイルをiTunes Connectにアップロードする」への1件のフィードバック

macOSアプリのCI事情6 – xcarchiveからpkgファイルを作る – なんてこったいブログ へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です