iTunes Connectがアップデートされてから、1つのアプリのバージョンに対して複数のipaをアップロードできるようになりました。 しかし、ビルド番号が重複しているとエラーが発生してしまうので、ビルド番号をインクリメントしていく必要があります。 手動でビルド番号をインクリメントしてリポジトリにコミットしていくと、分散管理では矛盾が生じてしまうので、 ビルド番号にはJenkinsのビルド番号を指定し、リポジトリにはコミットしないことにしてみました。

セットアップ

Jenkinsでxcodebuildを実行する前に以下のコマンドを実行するだけです。

agvtool new-version -all $BUILD_NUMBER

 

自分はJenkinsにアドホック配布用のipaとAppStore用のipaの両方を作成させていて、 AdHoc配布用のipaをTestFlightにアップロードし、AppStore用のipaはビルド成果物として保存しています。 こうすることで、TestFlightにはJenkinsのビルド番号と対応した番号が表示されてわかりやすいですし、 iTunes Connectにアップロードするipaのビルド番号が重複してしまうこともありません。

この運用方式は手元でのビルドには対応できないのですが、そもそも手元でビルドする必要がないのでひとまずこれでいいかなあと思いました。