Firebase App Distribution へのアップロード

GitHub ActionsでFirebase App Distributionにアプリをアップロードするには wzieba/Firebase-Distribution-Github-Action を使用して以下のように設定する。

      - name: upload artifact to Firebase App Distribution
        uses: wzieba/Firebase-Distribution-Github-Action@v1
        with:
          appId: アプリID
          serviceCredentialsFileContent: FirebaseサービスアカウントのcredentialのJSON文字列
          groups: グループ名
          file: apkファイルのパス

withで指定する値を以下で説明する。

appId(アプリID)

アプリIDはFirebaseのプロジェクトの設定画面で取得できる。

画面左上の歯車アイコンをクリックしてプロジェクトの設定画面を開き、画面下あたりの「アプリID」をコピーする。

アプリIDの取得

serviceCredentialsFileContent(FirebaseサービスアカウントのcredentialのJSON文字列)

FIrebaseサービスアカウントのcredentialのJSON文字列を指定する。

画面左上の歯車アイコンをクリックしてプロジェクトの設定画面を開き、「サービスアカウント」タブの「サービスアカウント権限の管理」をクリックする。

Firebaseのサービスアカウント画面

Google CloudのIAMの画面に遷移するので、「サービスアカウント」をクリックしてサービスアカウントを作成する。

GCP IAM画面

作成したサービスアカウントのメニューから「鍵を管理」をクリックする。

鍵を管理メニュー

キーを追加から「新しいカギを追加」をクリックする。

キーを追加

キーのタイプはJSONを選択して「作成」をクリックするとJSONファイルをダウンロードできる。
こうして作成したJSONファイルの中身をserviceCredentialsFileContentに指定する。
長い文字列であり、かつ外部にもれてはいけないので、GitHubのSecretsに保存しておいて、GitHub Actionsから使用するとよい。

          serviceCredentialsFileContent: ${{ secrets.CREDENTIAL_FILE_CONTENT }}

groups(グループ名)

App Distribuionで作成したグループ名を指定する。
複数のグループを指定するにはカンマ区切りで指定する。

          groups: group1,group2

App DistributionのグループはApp Distributionの画面の「テスターとグループ」タブで作成・確認できる。

グループ

file(apkファイルのパス)

アップロードするapkファイルのパスを指定する。

通常のAndroidアプリにおいて./gradlew :app:assembleReleaseで生成されるapkファイルはapp/build/outputs/apk/release/app-release.apkにある。

一度手元でビルドしてみてプロジェクトのトップからの相対パスを確認しておくとよい。

設定例

name: App Distribution

on:
  workflow_dispatch:

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up JDK
        uses: actions/setup-java@v4
        with:
          distribution: 'corretto'
          java-version: 17
          cache: gradle

      - name: restore key store
        run: echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > release.keystore

      - name: Build
        run: |
          ./gradlew :app:assembleRelease          

      - name: upload artifact to Firebase App Distribution
        uses: wzieba/Firebase-Distribution-Github-Action@v1
        with:
          appId: ${{secrets.FIREBASE_APP_ID}}
          serviceCredentialsFileContent: ${{ secrets.CREDENTIAL_FILE_CONTENT }}
          file: app/build/outputs/apk/release/app-release.apk