こんばんは。 pregum_foxです。
今回は個人開発毎回ビルドを手元で行うと、時間が溶けてしまうのでcodemagicを利用して
GitHubのレポジトリのdevelopブランチにPRがマージされたタイミングでビルドからFirebase App Distributeで配布を行う処理を自動化する手順を備忘録として残しておきます。
以下目次です。
- この記事を読んでわかること
- 事前に準備が必要なもの
- 手順
- 雑感
この記事を読んでわかること
codemagicを用いてFlutterの開発環境のビルド〜Firebase App Distributionの配布までの設定方法
事前に準備が必要なもの
必須
iOSでのビルドする場合
- code signing certificate(
*.p12
ファイル) - プロビジョニングプロファイル(
*.mobileprovision
)- 今回は開発環境なのでiOS App Development でOK
Androidでビルドする場合
- keystore
- 今回は開発環境なので、
~/.android/debug.keystore
のkeystoreを使用します。残りの3項目は左記のkeystoreの場合は、いじっていなければ以下の想定です。
- 今回は開発環境なので、
- alias
androiddebugkey
- storepass`
android
- keypass
android
Firebase App Distributionで配布する場合
- Firebaseのアカウント
手順
firebase-tools コマンドのインストール
- こちらのページ を参考に firebase-toolsコマンドを追加
firebase -V
コマンドでバージョンが表示されていればOK - Flutterプロジェクト
firebase login
コマンドで Firebaseプロジェクトを作成する為にFirebaseアカウントへログインします。
ログイン後、Success! Logged in as <メールアドレス>
と表示されていればOK
firebaseプロジェクトの初期化
firebase init
コマンドを実行します。Which Firebase features do you want to set up for this directory? Press Space to select features, then Enter to confirm your choices.
にはExtensions: Set up an empty Extensions manifest
のみチェックを入れてEnterPlease select an option
にはCreate a new project
を選択してEnterPlease specify a unique project id
ときかれたので、サンプル例としてsample-for-codemagic
と入力して EnterWhat would you like to call your project?
には そのまま Enter- あとは自動で生成されるので、待機
- 最後まで行ったらfirebase関連のファイルが追加されている
firebaseパッケージをFlutterプロジェクトへ追加
ビルド対象のリポジトリにfirebase_core パッケージを追加します。
flutter pub add firebase_core
コマンドを叩いて、firebase_core
パッケージを追加します。
flutterfire configure
コマンドを実行して、google-service.json などのファイルを自動的に設定します。- コマンド実行後、サポートするPlatformを聞かれるので、androidとiosを選択して、Enterを叩きます
- すると自動的にFirebaseのプロジェクト内にAppが生成されて、androidとiosのFirebase App IDが生成されています。
- あとは実際にcodemagic側で設定を行なっていきます
codemagicの設定
- ログイン後、右上の
Add application
ボタンをタップして、GitHub
を選択します。
- そのあと、対象のリポジトリを選択して、
Flutter (via Workflow Editor)
を選択します。
もし存在するはずのリポジトリが選択できない場合は、GitHub integration
のリンクからインテグレーション対象のリポジトリリストに追加してください。
選択できたら画面下部の
Finish Add application
ボタンをクリックします。すると下記のような画面が出るので、諸々設定をしていきます。
Build triggers
- 最初は
Build triggers
にて、実行するタイミングを設定します。 - 今回はdevelopにpushされた時としておくので、
Trigger on push
にチェックをいれます。- これでPRをdevelopにマージしたタイミングで実行されるようになります。
.env
の追加が必要な場合はこちら の記事が参考になりました。
Build
- 次にBuild時のコマンドの設定を行います。
- 特に操作はありませんが、Androidの配布の場合は、
Android build format
をAndroid app bundle and universal apk
を選択しておく必要がありました。
以下の箇所でリリースオプションや--dart-define等のコマンドラインの設定を行います。
Distribution
android code signing
まずは
Enable Android code signing
にチェックをいれます。冒頭に書いていた通りに
~/.android/debug.keystore
ファイルをkeystoreにドラッグ&ドロップし、
それぞれ設定します。
keystore password
:android
Key alias
:androiddebugkey
key password
:android
iOS code signing
私はManualで設定しましたが、Automaticで良い方はそちらの方が簡単かもしれません。
iOSは証明書からp12ファイルを作成して、
Code signing certificate
にドラッグ&ドロップします。keychian にて、p12ファイル作成時にパスワードを聞かれるので、今回は未記入で対応しました。
Provisioning profile
は実機の端末にて起動時に使用したプロビジョニングプロファイルをドラッグ&ドロップしました。
Firebase App Distribution
Enable publishing to Firebase App Distribution
にチェックを入れて、それぞれ設定していきます。
Firebase service account
Android Firebase app ID
- Firebaseコンソール上で、プロジェクトの設定 > マイアプリのアプリIDを設定すればOK
iOS Firebase app ID
- 同様にFirebaseコンソール上で、iOSのアプリIDを設定すればOK
ただ、iOSの場合は、bundle idがプロビジョニングプロファイルの設定とFirebaseの登録情報が異なる場合は、ビルドエラーになる為注意が必要です。
Tester groups for Android app / Tester groups for iOS app
どちらもFirebaseのApp distributionで設定したグループ名を設定すればOK
あとAndroid artifact type
をapkにすることを忘れずに
あとは右上のStart new build
ボタンから、開始すると手動で実行確認することができます。
雑感
今回は細かく書き出すと、分量が増える為codemagicの箇所に絞って説明しました。
使ってみて実際に一人で使用するだけでも楽なので、今後導入できそうなプロジェクトには活用していきたいなと思いました。
ここまで読んでいただきありがとうございました。