Edited at

[iOS]アプリ申請完全自動化


アプリの申請を完全に自動化する

ソースコードをpushしたら、あとは何も考えなくてもストアにリリースされる。

そんな環境を作ってみたのでメモ

まだちゃんと動かなさそう(fastlane_sessionが1ヶ月でexpireする)


全体の流れ

IMG_88DD0533F907-1.JPG

↑こんな感じ

Bitriseの部分は別になんでも良いのだけど、無料枠があったのでBitriseにしている。

automate.io は、いわゆるIFTTTのようなサービス。

似たようなサービスでメルカリの採用しているZapierと言うのがあるが、カスタムWebhookがプレミアム専用なのでautomate.ioを使うことにした。

正直Zapierの方がsampleみながらzap作れるしgmailの取得速いし、正規表現ちゃんと使えるのでZapierの方がおすすめです。


GithubにpushしてBitriseからappstore connectへアップロードする

ここは簡単。

bitrise.ioにサインアップしたら、チュートリアルの通りに進めばリポジトリとbitriseの連携が完了する。

あとは「Deploy to iTunes Connect - Application Loader」というstepを追加して、適宜情報を書き込めばアップロードされるようになる。

注意点としては、build numberをincrementすることを忘れずに。同じビルド番号のipaはアップロードに失敗します。

build numberの設定は「Set Xcode Project Build Number」というStepを使えば簡単に設定できます。

そして、書いていて思ったけどこの時点でappstore connectに新規のバージョンが無い可能性があるのでここはfastlaneのdeliver使った方がいいですね。


AppStore ConnectのCompleted Processを待つ

ipaをアップロードすると、appleは自動的にipaの健康状態をチェックしてくれます。(悪いことしているとこの時点で弾かれる)

ここは大体数分から数時間と幅があるのでひたすら待ちます。

待っていると、AppleからApp Store Connect: Version 1.0 (1) for AppName has completed processing.というタイトルのメールが届きます。


Completed Processingのメールが届いたらbitriseのworkflowを発火させる

automate.ioを使ってgmailを監視して、メールが届いたらbitirseのapiを叩きます。

メールにはbuild numberとversionも記載されているので、これらをパースしてbitriseの環境変数に乗せておきます。

スクリーンショット 2019-10-20 6.22.26.png

automate.ioのbotの中身はこんな感じ。

正規表現機能がガバガバなので、タイトルをスペースで区切って取り出しています。


bitriseからサブミットする

automate.ioのwebhookから叩かれたworkflowでfastlaneのdeliverを呼びます。

この辺は特に難しいところはないです。

サブミットするビルドのbundle numberなどは環境変数に入っているのでそれを使います。

fastlaneのascへの接続はFASTLANE_SESSIONを利用していますが、2FA切ったアカウントで認証しても良いと思います。


完成

あとはbitriseのtriggerなどを調整しながら、使いやすいようにしていきましょう。