はじめに
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
解決方法
ロールを割り当てる
- Cloud Functions 開発者
- Firebase Admin SDK 管理者サービス エージェント
- Firebase Extensions デベロッパー
- サービス アカウント ユーザー
プリジンバルはサービスアカウントのID
- keyをgithub secretsへ登録
ダウンロードしたjsonをbase64へ変換
cat ダウンロードしたjson名.json | base64
- .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
おわりに
自分のアプリ構成では上記の手順でうまくいったのですが、何か環境の違いなどでうまくいかないことがあると思いますので、ご指摘あればコメントください
参考