Closed5
FlutterのCI/CDの改めてまとめ
Codemagic
- 会社的な制約(海外Saasとの契約や情セキ説得などの障壁が無いのであれば)個人的にはmacOSビルド時間の短縮や低価格などを理由にCodemagicを使うのが今は良さそうと思っている。
- CodemagicとBitriseがモバイルアプリのCI/CDサービスとして有名
- CircleCI という選択もあるがモバイルアプリに限定するなら上記の方が人気
- 個人であれば無料枠からの利用ができるが、チーム(2アカウント以上)で利用しようとすると有料プランの利用が必須
- 無料枠
- 500時間/月
- macOS M1 マシンが使える
- タイムアウト120分
導入手順
macOSビルドも高速化&低価なので扱いやすそう。GitHub ActionsだとLinuxマシンの10倍の稼働時間がかかる のは有名な話。
チームでの利用には有料プランが必須
Starting November 1, 2020, we are making changes to our pricing for teams, whereby teams will become a paid feature, which means they no longer receive 500 free minutes or 2 free team seats.
GitHub Actions
- GitHubでソースコード管理しているなら導入がスムーズ
- レポジトリの権限的にはAdmin以上の権限が無いと環境変数周りの設定が面倒になるので必須
- パブリックレポジトリの場合は全てが無料なので何も気にせず使える
- 基本はプライベートレポジトリでの利用が主なはずので以下を気にする必要がある
- GitHubの契約形態によって利用できるストレージと無料稼働時間/月が変わってくる
- macOSの稼働時間がLinuxの10倍という最大の難所
GitHub Actionsの料金体系などの詳細

ストアへのデプロイ
- galleryのGitHubワークフローを参考に書けば良い
- Google Play Consoleへのデプロイは release_deploy_play_store.yml
Fastlane
- Ruby製のモバイルアプリに特化したCDサービス(OSS)
- 専用のFastfileで用意されたレーンごとに処理を実行する
- 手元でプリミティブに実行しても良し、環境変数をCI/CDツールから参照できるようにしてGitHub Actionsで利用できるようにしても良し
- Codemagicとの合わせ技も可能で自由度が高い
ドキュメント
わかりやすく記載されているので基本的にこれを読めば良い
レポジトリ
セットアップ
意外とFlutterのドキュメントもわかりやすい
Fastlaneの各ストアへのデプロイ
Google Play Console
-
upload_to_play_storeを利用する(supplyのエイリアス) - 事前準備としてGoogle Play ConsoleのAPIアクセスの有効化やサービスアカウントのセットアップなどが必要
- 同様に配信地域などの諸々のセットアップ も済ませておく必要がある(忘れがち)
App Store Connect
-
upload_to_testflightを利用する(pilotのエイリアス) - App Store Connect API(.p8ファイル)を使ってアップロードする
- 開発環境も本番環境も特に意識すること無く同じコードで処理できる
- 本番環境へのアップロード権限を絞るなどしたい場合はApp Store Connect側のRoleで設定すれば良い
このスクラップは2022/11/19にクローズされました