はじめに
今回はGitHub ActionsでDeploy時に起きたエラーについて書いていきます。
問題
エラーメッセージ
Error: firebase use must be run from a Firebase project directory.
Run firebase init to start a project directory in the current folder.
Error: Process completed with exit code 1.
main.yml
# デプロイジョブ - ビルド完了後に実行
deploy:
name: Deploy
runs-on: ubuntu-latest
needs: [build] # ビルドジョブの完了を待つ
steps:
# ソースコードのチェックアウト
- name: Checkout code
uses: actions/checkout@v3
# Node.js環境のセットアップとキャッシュの設定
- name: Setup Node.js and cache
uses: actions/setup-node@v3
with:
node-version: "18"
cache: "npm"
# Firebase CLIツールのインストール
- name: Install firebase-tools
run: npm install --save-dev firebase-tools
# Firebaseサービスアカウントキーのデコードと環境変数の設定
- name: Decode Firebase service account key
run: |
echo "${{ secrets.FIREBASE_KEY }}" | base64 -d > ./firebase-key.json
echo "GOOGLE_APPLICATION_CREDENTIALS=${{ github.workspace }}/firebase-key.json" >> $GITHUB_ENV
# Firebaseプロジェクトの切り替え
- name: change space
run: ./node_modules/.bin/firebase use ${{ secrets.FIREBASE_PROJECT_ID }}
# Firebaseへのデプロイ実行
- name: Deploy to Firebase Hosting
env:
# デプロイに必要な環境変数の設定
GOOGLE_APPLICATION_CREDENTIALS: ${{ github.workspace }}/firebase-key.json
FIREBASE_CLI_EXPERIMENTS: webframeworks
run: |
./node_modules/.bin/firebase deploy
# クリーンアップ:認証情報ファイルの削除
# always()を使用して、ジョブが失敗しても必ず実行
- name: delete GOOGLE_APPLICATION_CREDENTIALS
run: rm $GOOGLE_APPLICATION_CREDENTIALS
if: ${{ always() }}
解決方法
main.yml
# デプロイジョブ - ビルド完了後に実行
deploy:
name: Deploy
runs-on: ubuntu-latest
needs: [build] # ビルドジョブの完了を待つ
steps:
# ソースコードのチェックアウト
- name: Checkout code
uses: actions/checkout@v3
# Node.js環境のセットアップとキャッシュの設定
- name: Setup Node.js and cache
uses: actions/setup-node@v3
with:
node-version: "18"
cache: "npm"
# Firebase CLIツールのインストール
- name: Install firebase-tools
run: npm install --save-dev firebase-tools
# Firebaseサービスアカウントキーのデコードと環境変数の設定
- name: Decode Firebase service account key
run: |
echo "${{ secrets.FIREBASE_KEY }}" | base64 -d > ./firebase-key.json
echo "GOOGLE_APPLICATION_CREDENTIALS=${{ github.workspace }}/firebase-key.json" >> $GITHUB_ENV
+ # Firebaseプロジェクトを初期化
+ - name: Initialize Firebase project
+ run: ./node_modules/.bin/firebase init
# Firebaseプロジェクトの切り替え
- name: change space
run: ./node_modules/.bin/firebase use ${{ secrets.FIREBASE_PROJECT_ID }}
# Firebaseへのデプロイ実行
- name: Deploy to Firebase Hosting
env:
# デプロイに必要な環境変数の設定
GOOGLE_APPLICATION_CREDENTIALS: ${{ github.workspace }}/firebase-key.json
FIREBASE_CLI_EXPERIMENTS: webframeworks
run: |
./node_modules/.bin/firebase deploy
# クリーンアップ:認証情報ファイルの削除
# always()を使用して、ジョブが失敗しても必ず実行
- name: delete GOOGLE_APPLICATION_CREDENTIALS
run: rm $GOOGLE_APPLICATION_CREDENTIALS
if: ${{ always() }}
おわりに
エラーメッセージでRun firebase init to start a project directory in the current folder.(現在のフォルダーでプロジェクトディレクトリを開始するには、firebase init を実行します。)
と言われたのでFirebaseプロジェクトの初期化をするコードを追加してこのエラーは解決出来ました。