BitriseからFirebase App Distributionを使ってiOS・Androidアプリを配布する(Fastlaneを利用しない方法)

# 概要

Bitriseから[Firebase App Distribution](https://firebase.google.com/docs/app-distribution?hl=ja) を利用してみたので手順と所感をメモします。
※最近リリースされた、BitriseのWorkflowで利用できるFirebase App Distribution Stepを利用しています。

## 環境
利用ツール
- Bitrise
- Firebase App Distribution

最近Firebase App Distribution Stepがリリースされたことを受け、Fastlane等は用いずにFirebase App Distributionと連携しています。
尚、プロジェクトにBitrise、Firebaseが導入されている前提で書いているため、各ツールの導入方法については言及していません。

## Firebase App Distributionの準備

Firebase App Distributionの公式Docは[こちら](https://firebase.google.com/docs/app-distribution?hl=ja)

2020年3月現在、Firebase App Distributionはベータ版リリースとなっています。


### 1. App Distributionメニューを開く
利用しているFirebase プロジェクトの「App Distribution」を開きます。

![](https://i.imgur.com/DSJ8n4y.png)


### 2. App Distributionの利用開始
![](https://i.imgur.com/lUbx3tv.png)
まだ一度もApp Distributionを利用していない場合は、上記の画面が表示されるので、「開始」をしておきます。

![](https://i.imgur.com/CZLb7xT.png)

利用開始すると↑のような画面が表示されます。この時点で手動で、ipa(iOS)もしくはapkファイル(Android)をアップロードすれば、テスターに指定されているユーザにアプリの配布を行うことができます。

### 3. テスターとグループを設定
![](https://i.imgur.com/KTQYwL6.png)

「テスターとグループ」タブへ移動し、テスターを追加します。
テスターは「グループ」の単位でまとめられるので、任意のグループを作成しておきます。
ここでは、「app-dev」というグループを作成しました。
このグループ名は後ほどBitriseの設定で利用します。


### 4. Firebase App IDの確認

1~3の流れで、Firebase App Distribution上で実施する設定は終了です。
最後に、Firebaseのプロジェクト設定から、App IDを控えておきます。

![](https://i.imgur.com/cW0SJr0.png)

プロジェクト設定 -> マイアプリ -> アプリID で確認できます。


### 5. サービスアカウントの取得

[Google Cloud Platform](https://console.cloud.google.com/projectselector2/iam-admin/serviceaccounts)上でFirebaseで利用しているプロジェクトを選択し、新しいサービスアカウントを作成します。

作成するサービスアカウントには以下の権限を付与しておきます。
- Firebase 品質管理者
- Firebase App Distribution 管理者

サービスアカウントが作成できたらプライベートjsonキーを発行し、安全な場所に保管しておきます。
(Bitriseで利用します)

※公式Docによると、2019年9月20日以前にアプリを作成した場合は、Google Api Consoleで[Firebase App Distribution](https://console.developers.google.com/projectselector2/projectselector/apis/api/firebaseappdistribution.googleapis.com/overview?pli=1&supportedpurview=project&folder=true&organizationId=true)を有効にしておく必要があるとのことです

### 6. BitriseでWorkflowを設定する

BitriseにFirebase App Distributionへのアップロードを行うためのstepを追加していきます。
利用するWorkflowは下記の2つです。
- Script
- [BETA]Firebase App Distribution

![](https://i.imgur.com/CcqaOLg.png)

※ 最近、Firebase App Distribution Stepがリリースされたようです :tada: 

実際に設定をする前に、Firebase App Distribution Stepで必要な項目を確認しておきます。
設定が必要な項目は下記になります。 (※ 一部任意の項目は省略しています)

1. Service Credentials File もしくは Firebase Token
2. App Path
3. Firebase App ID
4. Test Groups(任意)

BitriseからFirebase App Distribution を利用するには、２つの認証方法があります。

・Firebase Tokenを用いる
・Service Credentials Fileを用いる (サービスアカウントを利用する)

※継続的に利用することや柔軟な利用を考え、今回はサービスアカウントを利用する例について説明をしていきます。


上記必要な項目の内、2~4については、すでに準備ができているので、1のService Credentials Fileを準備してあげる必要があります。

#### 6-1. Service Credentials Fileを準備する

先ほど生成したサービスアカウントのキーファイル(Json)をBitrise上にアップロードしておきます。

1. Bitrise上の「Code Signing」 -> 「GENERIC FILE STORAGE」からファイルをアップロードします。
2. Download URLの環境変数が定義されるので控えておきます (ex. $BITRISEIO_HOGE_SERVICE_KEY_URL)

#### 6-2. Script stepを使ってキーをダウンロード
Firebase App DistributionはDownload URLから直接キーファイルを取得することができないため、Script Stepを使って、一時的にキーをダウンロードしてあげます。

Shellのサンプル

```shell=
curl -o /tmp/hoge.json $BITRISEIO_HOGE_SERVICE_KEY_URL
```

#### 6-3 Firebase App Distribution Stepの設定

上記までの手順を踏んでいれば、Firebase App Distribution Stepを設定する項目は揃っています。

![](https://i.imgur.com/MkZCdPM.png)

Service Credentials Fileには、キーをダウンロードしたローカルのPATHを指定します。

Service Credentials File の例

```
/tmp/hoge.json
```

App Pathには、Bitriseの環境変数が使えます。

```
iOS:  $BITRISE_IPA_PATH 
Android: $BITRISE_APK_PATH
```

Firebase App IDには、Firebase上で取得したApp IDを使用します。

その他、TesterやTest Groups, Release notes等が任意で設定できるので、お好みで設定します。

以上でFirebase App Distribution Stepの設定は終了です。

![](https://i.imgur.com/0aUpGRK.png)

プロジェクトのWorkflowとつなげてビルドを走らせれば、Firebase App Distribution上にアプリがアップロードされ、指定されたTesterに通知のメールが飛ぶはずです :tada: 

以上、Bitriseで(Fastlaneを使わずに)Firebase App Distributionでアプリを配布する手順のメモでした。