FlutterでiOSアプリをCodemagic経由でTestFlightに自動デプロイする
モバイルアプリを開発する場合、チームメンバーに開発中の最新のアプリをできるだけ早くさわってもらいフィードバックを得ることが大事です。iOSではTestFlightを使いチームメンバーにアプリを配布することがおおいと思います。
今回はFlutter
で作ったiOSアプリをTestFlightにCodemagicを使って自動デプロイする設定を紹介します。
Codemagic
はFlutter
専用のCI/CD環境です。Flutter live
でも紹介されていました。現在のところ無料で使えてTestFlightへ自動でアップロードすることができます。
ただ、ビルドの設定を他の開発者と共有するなどのチーム機能はまだ開発中のようでこの記事を書いている段階では使えません。
iOSとAndroidのビルドができますが今回はiOSだけを扱います。
App Store Connectの設定は、Build and release for iOSをみて実施しておきます。
Codemagicの設定
Codemagicの基本的な流れは、GitHubアカウントでログインしてFlutterのリポジトリを選択してビルド設定を行います。
ビルド設定は以下のようになっています。(flutter_flavor
というのがアプリの名前です)
設定項目はBuild
、Test
、Publish
とあり、各ステップで細かい設定があります。
右上に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にあげることができません。
Test
の項目はデフォルトのままにしています。テストがない場合は設定を変更してください。
Publish
の設定を行います。iOS
を設定する場合は、iOS code signing
とApp Store Connect
の設定を行います。(ビルド後の通知を行いたい場合はSlack
の設定などもできます)
iOS Code Signing
にはDistribution
のProvisioning Profile
の証明書を設定します。ファイル名は適当です。ここにざくっとやり方が書いてあるので参考にしてください。
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アプリが手軽にメンバーに共有することができます。ぜひぜひ使ってみてください。