1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Actions で Firebase Hosting にデプロイしたときの Failed to authenticate エラーの原因と解決方法

Posted at

はじめに

githubActionsを使用しCI/CDを使用したとき、認証が上手くいかなかったため解決方法をまとめさせていただきます。

エラー内容

Error: Failed to authenticate, have you run firebase login?
Error: Process completed with exit code 1.

発生タイミング

・GitHub Actions など CI/CD 上で firebase deploy を実行したとき
・ローカルでは問題なくても、CI 上ではエラーになることがある

エラーの意味

・Firebase CLI が 認証情報を持っていないため、デプロイできない
・firebase loginが必要、と言われていますが、CI 上でブラウザログインはできない

CI上で認証エラーが発生する理由

・CI/CD 環境は 新しいマシン で、ローカルの Firebase 認証情報は存在しません
・npx firebase deployは、CLIがログイン済みであることを前提に動くため、未認証では失敗します

解決方法 : サービスアカウントJSONを使用する

1,Firebaseコンソールでサービスアカウントを作成
 →FirebaseConsole → プロジェクトの設定 → サービスアカウント → 新しい秘密鍵を生成 → JSONファイルを保存

2,JSONファイルをGitHub Secretsへ登録
 →githubのプロジェクトへ移動 → Settig → Secrets and variables → Actions →New repository secretに登録
(nameは好きな名前を選択。今回は「FIREBASE_KEY」: jsonファイルは全選択し貼り付け)

3,GitHub ActionsでJSONを読み込み、環境変数 GOOGLE_APPLICATION_CREDENTIALS に渡す

- name: Deploy to Firebase Hosting
  uses: FirebaseExtended/action-hosting-deploy@v0
  with:
    repoToken: "${{ secrets.GITHUB_TOKEN }}"
    firebaseServiceAccount: "${{ secrets.FIREBASE_KEY }}"
    projectId: "indiegame-hub"
    channelId: "live"

・JSON を直接渡すだけで CI 上で認証可能
・firebase login は不要

まとめ

・今回のエラーは「認証情報がないままCLI」を実行した」ことが原因

・CI/CDではブラウザログインは使えないため、サービスアカウントJSONファイルを作成し、公式Actionを使用するのが安全である。

・Secrets に JSON を登録し、CI上で渡すだけで解決可能

JISOUのメンバー募集中!

プログラミングコーチングJISOUでは、新たなメンバーを募集しています。
日本一のアウトプットコミュニティでキャリアアップしませんか?
興味のある方は、ぜひホームページをのぞいてみてください!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?