FlutterでiOSアプリをCodemagic経由でTestFlightに自動デプロイする

by

@wapa5pow

ogp

モバイルアプリを開発する場合、チームメンバーに開発中の最新のアプリをできるだけ早くさわってもらいフィードバックを得ることが大事です。iOSではTestFlightを使いチームメンバーにアプリを配布することがおおいと思います。

今回はFlutterで作ったiOSアプリをTestFlightにCodemagicを使って自動デプロイする設定を紹介します。

CodemagicFlutter専用のCI/CD環境です。Flutter liveでも紹介されていました。現在のところ無料で使えてTestFlightへ自動でアップロードすることができます。
ただ、ビルドの設定を他の開発者と共有するなどのチーム機能はまだ開発中のようでこの記事を書いている段階では使えません。
iOSとAndroidのビルドができますが今回はiOSだけを扱います。

App Store Connectの設定は、Build and release for iOSをみて実施しておきます。

Codemagicの設定

Codemagicの基本的な流れは、GitHubアカウントでログインしてFlutterのリポジトリを選択してビルド設定を行います。
ビルド設定は以下のようになっています。(flutter_flavorというのがアプリの名前です)

app settings

設定項目はBuildTestPublishとあり、各ステップで細かい設定があります。
右上にWorkflow settingsというのがありますが、同じリポジトリに対して複数のビルドプロセスを設定できます。例えば、masterブランチに対してproductionワークフロー、developワークフローを定義して、本番サーバにつなぎにいくアプリ、開発サーバにつなぎにいくアプリを別々の設定でビルドし、配布できます。

それでは実際の設定をはじめから見ていきます。あらかじめiTunes Connectにアプリが作成されているという前提ですすめます。

Buildの項目は以下のように設定します。
Build argumentsには--build-number $BUILD_NUMBERを設定します。BUILD_NUMBERは、iOSのCFBundleVersionにあたるのですが、Codemagicのワークフローをビルドするたびにインクリメントされるビルド番号が設定されています。TestFlightで1.0.1(10)のように表示される10の部分です。この番号が同じだとTestFlightにあげることができません。

build settings

Testの項目はデフォルトのままにしています。テストがない場合は設定を変更してください。

test settings

Publishの設定を行います。iOSを設定する場合は、iOS code signingApp Store Connectの設定を行います。(ビルド後の通知を行いたい場合はSlackの設定などもできます)

publish settings

iOS Code SigningにはDistributionProvisioning Profileの証明書を設定します。ファイル名は適当です。ここにざくっとやり方が書いてあるので参考にしてください。

iOS code signing

App Store ConnectにはiTunes Connectのログインに使用してApple ID、Passwordと、アプリのApp IDを入力してください。

iOSのArchiveの設定

Codemagic以外の設定をします。

リポジトリのios/Runner.xcworkspaceを開きます。リリース用にXcodeでそのままArchiveするとこけるので、ios/Flutter/Release.xcconfigファイルに以下を追記します。

TRACK_WIDGET_CREATION=

次にInfo.plistを開き、App Uses Non-Exempt EncryptionをYESに設定します。これはそのままだとTestFlightでMissing Complianceで暗号に関する設定を手動でしなくてはいけないのですが、それをさけるため設定しています。

CI/CD実行

これまでの設定で、masterブランチにpushすると自動でTestFlightに最新バージョンがアップロードされるようになります。

Codemagicを使えば開発中の最新のiOSアプリが手軽にメンバーに共有することができます。ぜひぜひ使ってみてください。