firebase deploy には、 token を利用した方法と、サービスアカウントを利用した方法がある。
token を利用する記事は多くあるが、問題点があり、特定ユーザーの権限が全て circleci に渡ってしまうため、別プロジェクトも操作できてしまう事と、ユーザーをプロジェクトから外したときに、デプロイができなくなってしまう。
なので、こちらにあるような、`firebase login:ci` でtokenを取得する方法はおすすめしない。
サービスアカウントを利用したデプロイ
サービスアカウントの作成
これはとても簡単に作成できる。
歯車 > ユーザーと権限 > サービスアカウント > [新しい秘密鍵の生成]
これで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-****` と書いてあれば、正しくサービスアカウントでデプロイできている。
ユーザーのメールアドレスの場合は、ユーザーアカウントでデプロイしたことになっている。