Firebase App Distribution (Beta) へのアップロードを Android apk で試す

Photo by Toby Stodart on Unsplash

リリース前に動作確認したいのでアプリを配布したい、という場合に DeployGate をずっと用いていたが、Firebase が提供している Firebase App Distribution もさわり心地特に問題なかったので、どうアップロードを自動化できるかというのを調べた。

CI で Workflow 組もうと思ったら 2020/07 時点では権限周りが少しめんどかったのでメモ。

CI サービスで動かそうとしているので、属人化を防ぐためにサービスアカウントに権限付与し、そのアカウントで認証して Firebase CLI を使うのが良い。Fastlane に乗る。

該当の Firebase project 配下にサービスアカウントを作成し、秘密鍵 (JSON) をダウンロードしてどこかに配置しておく。

Google Cloud Platform の console でのサービスアカウント作成画面

Firebase の権限に関してはこちら。App Distribution に関してはベータ版なので、今後変更がある可能性がある。

適当にオーナー権限つけるわけにもいかんので、コードを読む。

firebase_app_distribution plugin のコードを見ると、firebase CLI のラッパーであり、firebase appdistribution:distribute コマンドを実行している。

appdistribution:distribute 内を覗くと Firebase App Distribution 以外のリソースへの権限は不要そう。アプリの情報の取得と、バイナリのアップロードのために以下の権限を付与するので十分。

  • firebaseappdistro.releases.list
  • firebaseappdistro.releases.update

ちなみに、2020/07/20 現在ではバイナリアップロードのみに適したロールはデフォルトでは用意されてなかった。

ロールから Firebase App Distribution で検索すると、デフォルトで Firebase App Distribution 管理者 というのが用意されている。名前だけ見てこれでいいじゃんと思ったけど、読み取り専用。Firebase 品質管理者というのもいたけど、App Distribution 以外の権限もあったため、専用のカスタムロールを作成した。

Firebase App Distribution へのバイナリアップロード専用のカスタムロール

Firebase 自体のページにご丁寧に載っている。

Firebase CLI が必要なので、以下を参考にインストールするステップを Fastlane のタスク実行前に入れる。CI で用いるマシンや docker image には node が入っていない場合もあると思うが、standalone binary も用意されていて便利。

Firebase の認証はサービスアカウントを用いて行うので、以下のように予め環境変数を設定しておく。

Fastfile もこのようになるだろう。

App Tester アプリのおかげで比較的配布も楽な印象。

Play Console の Internal App Sharing は App Bundle をアップロードできるが、ストアに公開されているアプリしかアップロードできない。App Distribution はストアに公開してないアプリもアップロードできるが、App Bundle をアップロードできない。両方できるサービスが待ち望まれている。

Club kids never die

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store