macOSアプリのCI事情8 – 一連の流れをコマンドで実行してみる

pkgファイルをiTunes Connectにアップロードするところまでをコマンドラインから実行できるようになったら、一度流れを整理しておこう。

ビルドからアップロードまでの流れ

  1. xcodebuildを使って、xcarchiveを作る
  2. xcarchiveからpkgを出力するためのオプションを書いたplistを用意する
  3. xcodebuildを使って、xcarchiveからpkgファイルを作る
  4. deliverを使うための設定ファイル(Deliverfile)を用意する
  5. deliverを使ってpkgファイルをiTunes Connectにアップロードする

このうち、pkgの出力オプションのplistとDeliverfileは毎回生成する必要がないため、一度生成したら次回以降のフローではそのファイルを使い回していけば良い。
plistファイルについては、基本的に機密情報を含まないため、プロジェクトのレポジトリに保存して、他のチームメンバーが参照できたとしても問題ないだろう。
一方、Deliverfileについては、Apple IDが記載されているので、他のチームメンバーに参照されたくない場合はレポジトリに保存しない方が良いかもしれない。特に、オープンソースの場合などは含めず、レポジトリ外に保存しておいて実行時にプロジェクトのディレクトリーにコピーする形にするのが良いかもしれない。なお、DeliverfileにはApple IDのパスワードは含まれていない。パスワードはKeychainに保存されているため、別のマシンにDeliverfileだけをコピーしてもそのまま実行することはできないので注意。
この一連の流れを改めてコマンドで実行してみる。

cp ~/path/to/Deliverfile .
xcodebuild -workspace image-concat.xcworkspace/ -scheme Tunacan clean archive -archivePath build/archive.xcarchive | xcpretty
xcodebuild -exportArchive -archivePath build/archive.xcarchive/ -exportPath build/pkg -exportOptionsPlist export-options.plist | xcpretty
deliver --pkg build/pkg/Tunacan.pkg

チェックアウトするところからスクリプト化する

開発・デバッグに使っているディレクトリのファイルを使って申請用のビルドを作るよりは、クリーンな状態でレポジトリからプロジェクトをクローンしてきて、そこでビルドを作る形で運用する方が望ましい。作業中のディレクトリには、コミットしていないファイルが存在しうるため、次回他の環境で、あるいは他のメンバーがビルドをしようとした時に違う結果になってしまうリスクがあるからだ。

mkdir app_submission
cd app_submission
git clone プロジェクトのgitのパス project
cd project
pod install #CocoaPodsを使っている場合のみ
cp ~/path/to/Deliverfile . #Deliverファイルをコピーする
xcodebuild -workspace image-concat.xcworkspace/ -scheme Tunacan clean archive -archivePath build/archive.xcarchive | xcpretty
xcodebuild -exportArchive -archivePath build/archive.xcarchive/ -exportPath build/pkg -exportOptionsPlist export-options.plist | xcpretty
deliver --pkg build/pkg/Tunacan.pkg
cd ../../
rm -rf app_submission

ここではわかりやすくするために、チェックインしたディレクトリの下のbuildディレクトリにxcarchve, pkgを出力しているが、後で出力内容を確認したい場合は、チェックアウトしたディレクトリとは別のディレクトリ~/Documents/my_app_submissionなどに出力するか、サブミット後にxcarchive, pkgファイルをこれらの場所にコピーするようにすると良い。
ここまで出来ると、いよいよJenkinsやBitriseなど、作業用のマシンと別の環境で申請用のビルドを作ったり、テストを走らせたりすることができるようになる。

Pocket

コメントを残す

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