k-shinn’s 雑記

技術メモを書き溜められたら良いな

GithubActionsへのAppDistributionの導入

GithubActionsにAppDistributionを導入してみたので、その手順を纏めようと思います。

公式ドキュメントは以下です。

firebase.google.com

前提として、FirebaseとAndroidプロジェクトの連携は済んでいる状態とします。

AppDistributionの有効化

単純なことですが、FirebaseConsoleからAppDistributionを有効化します。

f:id:k-shinn:20210711143612p:plain
AppDistribuitonの有効化

あまり気にすることも無いと思いますが、これをやっておかないと最後に実行した時にErrorになります。

FirebaseTokenの取得

CI上からAppDistributionでの配布を実行するために、Tokenを取得します。

取得方法は公式ドキュメント的に3通り紹介されています。

今回はFirebaseへのアクセス権がある開発者でTokenを取得しようと思いますので、サービスアカウントを使用する方法以外の2種類を紹介します。 この場合、開発者が変わる場合にはTokenの見直しが必要になると思いますので、ご注意を。

gradleコマンドで取得する方法

gradleで以下の様に設定を加えます。

  • project-root/build.gradle
buildscript {
    dependencies {
        classpath 'com.google.firebase:firebase-appdistribution-gradle:2.0.1'
    }
}
  • project-root/app/build.gradle
apply plugin: 'com.google.firebase.appdistribution'

続いて以下のコマンドを実行します。

./gradlew appDistributionLogin

実行すると認証のためのURLが出力されるので、ログインすればTokenが発行されます。

f:id:k-shinn:20210711152515p:plain
Firebase Login

f:id:k-shinn:20210711153254p:plain
gradleログイン

FirebaseCLIで取得する方法

何れかの方法でFirebaseCLIをローカル環境にインストールして、以下のコマンドを実行します。

$ firebase login

実行すると即ブラウザでログインを求められるので、gradleの場合同様にログインすればTokenが発行されます。

環境変数へのTokenの登録

CI環境から取得したTokenを使用できるように、環境変数に登録します。 登録すべきTokenは先程取得したFirebaseTokenの他、FirebaseのアプリIDも必要になります。

アプリIDは以下の箇所で参照できます。

f:id:k-shinn:20210711160301p:plain
AppID

GithubActions用に登録するには、Githubリポジトリで、Setting→Secretから行えます。

f:id:k-shinn:20210711154407p:plain
github Secret

配布Actionの設定

Actionがありますので、これを使わせて頂きます。 配布するapkをBuild後、Actionを実行する手順を書けばOKです。

- name: Builed Apk
  run: |
    ./gradlew assembleProductionRelease
- name: upload artifact to Firebase App Distribution
  uses: wzieba/Firebase-Distribution-Github-Action@v1
  with:
    appId: ${{secrets.FIREBASE_APP_ID}}  # Githubに保存した環境変数
    token: ${{secrets.FIREBASE_TOKEN}}   # Githubに保存した環境変数
    groups: android-developer  # テスターグループ名
    file: app/build/outputs/apk/production/Release/app-production-Release.apk

後は上記のAction中にもあるように、テスターグループをFirebaseConsole上で設定して実行すれば完了です。

テスターグループについて

配布先はグループ毎に指定出来ます。このグループの作成はFirebaseConsole上で可能です。

f:id:k-shinn:20210711160407p:plain
テスターグループ設定

Action内で指定するテスターグループ名は、グループ名横のaliasになります。

テスターの登録

テスターはConsole上で直接アドレスを登録するか、招待リンクを作成してテスター側に登録してもらう事が出来ます

f:id:k-shinn:20210711155105p:plain
招待リンクの作成

後は登録時もしくは配布時に送られてくるメールからDistributionのページを開くか、メールのリンクにあるテスターアプリをインストールすれば使用できます。

その他の配布方法

gradleコマンドでの実行

gradleに予め設定を書いておけば、gradleコマンドでAppDistributionでの配布を行うことも出来ます。

前述のgradleでのTokenの取得はこの設定のついでに出来ますので、gradleコマンドで配布する場合はそちらも合わせて行うと良いと思います。 (あまり利点は無いと思いますが、GithubActionsからgradleコマンドを叩いてもできるはずです。)

CircleCIでの配布

これは自分で試していないので調べた限りの話になりますが、CircleCIの場合、その内部だけで設定を完結させようとすると、FirebaseCLIやfastlane等を環境上に導入するなど、ひと手間必要になりそうです。

セキュリティ上問題がなければ、上記のgradleコマンドを直接叩く手順をCIに加えてしまうことも選択肢に入れて良いと思いました。