0
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?

FirebaseFunctions へのデプロイを GitHub Actionsを使って自動化する

Last updated at Posted at 2025-01-08

はじめに

Cloud Functions for Firebaseへ自動デプロイを行うときにfirebase login:ciが非推奨になっていて困ったためまとめます。

問題

GitHub ActionsからCloud Functions for Firebaseへ自動デプロイした際に以下の記事にたどりついたのですが、
https://qiita.com/yudai2929/items/afb993858d7ca12f34f1

以下の警告が出来ました。
この認証方法は非推奨なようですので、サービスアカウントで今回Github Actionsからデプロイを行ってみました。

⚠  Authenticating with a `login:ci` token is deprecated and will be removed
in a future major version of `firebase-tools`.
Instead, use a service account key with
`GOOGLE_APPLICATION_CREDENTIALS`: https://cloud.google.com/docs/authentication/getting-started

解決方法

  1. サービスアカウント作成
    サービスアカウント権限の管理から移動
    スクリーンショット 2024-12-09 161051.png
    サービスアカウントを作成
    スクリーンショット 2024-12-09 161605.png
    記載して作成
    image.png

  2. キーを追加
    鍵を管理
    スクリーンショット 2024-12-09 162114.png
    新しい鍵を作成・jsonファイルダウンロード
    image.png

  3. IAMを作成
    image.png

ロールを割り当てる

  • Cloud Functions 開発者
  • Firebase Admin SDK 管理者サービス エージェント
  • Firebase Extensions デベロッパー
  • サービス アカウント ユーザー
    image.png
    プリジンバルはサービスアカウントのID
    image.png
  1. keyをgithub secretsへ登録
    ダウンロードしたjsonをbase64へ変換
cat ダウンロードしたjson名.json | base64

出力された値をActions secretsへ登録
image.png

  1. .github/workflows/yml記載
name: firebase-ci-cd

on: 
  push:
    branches: ['master']
  workflow_dispatch:

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

      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: 20
          cache: 'npm'

      # Functions用の依存関係をインストール
      - name: Install Functions Dependencies
        run: cd functions && npm ci

      # Firebase CLIのインストール
      - name: Install Firebase CLI
        run: npm install -g firebase-tools

      - name: Create SA Key File
        run: echo "${{ secrets.FIREBASE_SERVICE_ACCOUNT_KEY }}" | base64 -d > ${{ github.workspace }}/sa-key.json

      - name: Deploy to Firebase
        run: |
          export GOOGLE_APPLICATION_CREDENTIALS="${{ github.workspace }}/sa-key.json"
          firebase deploy --only functions

おわりに

自分のアプリ構成では上記の手順でうまくいったのですが、何か環境の違いなどでうまくいかないことがあると思いますので、ご指摘あればコメントください

参考

0
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
0
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?