CircleCI や Github Actions などで、 firebase deploy を行う

firebase deploy には、 token を利用した方法と、サービスアカウントを利用した方法がある。

token を利用する記事は多くあるが、問題点があり、特定ユーザーの権限が全て circleci に渡ってしまうため、別プロジェクトも操作できてしまう事と、ユーザーをプロジェクトから外したときに、デプロイができなくなってしまう。

なので、こちらにあるような、`firebase login:ci` でtokenを取得する方法はおすすめしない。

Firebase CLI リファレンス

サービスアカウントを利用したデプロイ

サービスアカウントの作成

これはとても簡単に作成できる。
歯車 > ユーザーと権限 > サービスアカウント > [新しい秘密鍵の生成]
これでjsonファイルが取得できる。

こちらはFirebaseの操作が何でもできるアカウントなので、ここからさらに権限を減らしたサービスアカウントを作る場合もある。

json ファイルを使ったデプロイ

まずはパソコン上でデプロイを試すと思うが、
`GOOGLE_APPLICATION_CREDENTIALS ` この環境に、json ファイルのパスを設定する。
project id は、歯車 > プロジェクトを設定 から確認できる。
あとは、自動で環境変数が読まれ、デプロイすることができる。

export GOOGLE_APPLICATION_CREDENTIALS=******/***.json
firebase deploy --project <project id>

注意点として、すでに firebase login をしている場合は、そちらが優先されてしまうため、かならず firebase logout でログアウトを行う。

デプロイの確認方法

サービスアカウントでデプロイできているかを確認するには、
Hosting > リリース履歴 を確認し、`firebase-adminsdk-****` と書いてあれば、正しくサービスアカウントでデプロイできている。
ユーザーのメールアドレスの場合は、ユーザーアカウントでデプロイしたことになっている。