FlutterアプリのiOS CI/CD設定手順

Bundle Identifierの登録

Certificates, Identifiers & ProfilesでBundle Identifierの登録を行う。

App Store Connectでのアプリの作成

App Store ConnectのApps画面から「New App」を選んでアプリを作成する。Bundle Identifierは↑のステップで作成したものを選ぶ。

Xcode ProjectのBundle Identifier変更

Flutterから書き出されたXcode Projectを開いて、Bundle Identifierを↑のステップで作成したものに変更する。Product Flavorを使っている場合はそれぞれのFlavor用にConfigを作成して、それぞれのBundle Identifierを設定する。

Complianceの設定

Info.plistを開き、App Uses Non-exempt Encryptionの設定を追加する。

Post Cloneスクリプトの追加

Xcode Cloudでプレビルド処理を行うためci_scripts/ci_post_clone.sh を作成する。

パッケージの使用有無によってCocoaPodsの呼び出しの有無、Product Flavor / Dart-define-from-fileの使用有無によって flutter build の呼び出し方/引数が変わるので注意する。

ここまでの設定内容をレポジトリにPushしておく。

Testing Groupの作成

App Store ConnectのアプリのTestFlight設定画面で、Internal Testing用のTesting Groupを作成し、テスト用のApple IDを招待しておく。

Workflowの作成とテスト実行

Xcode CloudのWorkflowの作成を行う。ArchiveアクションのDeployment PreparationはTestFlight (Internal Testing Only)かTestFlight and App Storeのいずれかを選ぶ。Xcode Cloudの仕様なのか不具合なのか、この段階ではTestFlightの配信の設定ができないことがあるので、一旦ここまでで設定を完了し、手動で初回のビルドをトリガーし、ビルドが成功するかを確認する。

Post-Actionの設定とテスト再実行

Workflowの実行に成功したら、WorkflowをEditし、「TestFlight Internal Testing」のPost Actionを追加する。↑で作ったTesting Groupを指定し、再びビルドをトリガーし、ビルドが自動でアップロードされてTestFlightでテスト可能になることを確認する。