1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカルで出来たfirebase deployがGitHub Actionsでできない際に確認すべきこと

Posted at

はじめに

firebaseでのnpm run buildfirebase deployをローカル環境上では通せた状況で、GitHub Actionsを使った自動デプロイの際にfirebaseのデプロイを試みていたのですが何回も詰まってしまいました。

この記事では備忘録として、実際に起きた事例を書き起こしながら「どうすればデプロイできたか」を書いていきます。

今回の前提

  • ローカル環境でnpm run buildfirebase deployを叩いたときにPassできること
  • GitHub Actions上でnpm run installnpm run buildの自動デプロイまではできるようになっていること

最初に出たエラー / インストール周り

GitHub Actions上でfirebase deployの処理を回したところFailureとなりました。
エラーメッセージには以下のような文言が書かれていました。

/home/runner/work/_temp/0895dc39-d86e-46bb-af20-09cc466de998.sh: 
line 1: firebase: command not found

どうやらfirebaseのコマンドが見つからないことが原因のようです。

エラーへの対策

※こちらの記事に記載されていた方法を参考にしました。

コードを見返してみたところ、firebaseのインストールを経ずにいきなりfirebase deployをしていたことが原因でした。

そのため、上記の記事をもとにyamlファイルを次のように修正し、firebase-toolsをインストールする工程を加えました。

deploy.yaml
    - name: install
        run: npm install && npm install -g firebase-tools

すると最初に詰まっていたfirebase: command not foundのエラーは解消されました。無事にインストールは出来たようです。

次に出たエラー / 環境変数周り

firebaseをインストールした後にデプロイを試してみましたが再度エラーが出ました。

Error changing to directory firebase: Error: ENOENT: 
no such file or directory, chdir '(アプリのパス)' -> 'firebase'

その際の解消法として下記の記事を参考にしました。

考えられる原因としては作成したアプリでは.envファイルとして設定していたfirebaseの環境変数がGitHub Actions上で反映されていないことのようでした。

なので、yamlファイルのbuildの段階で環境変数の記載を加えることにしました。
また、firebaseのデプロイの際にはfirebase tokenも必要なため、これらを双方加えることにしました。

deploy.yaml
jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    # 環境変数を加えた部分①
    env:
      VITE_FIREBASE_API_KEY: ${{ secrets.VITE_FIREBASE_API_KEY }}
      VITE_FIREBASE_AUTH_DOMAIN: ${{ secrets.VITE_FIREBASE_AUTH_DOMAIN }}
      VITE_FIREBASE_PROJECT_ID: ${{ secrets.VITE_FIREBASE_PROJECT_ID }}
      VITE_FIREBASE_STORAGE_BUCKET: ${{ secrets.VITE_FIREBASE_STORAGE_BUCKET }}
      VITE_FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.VITE_FIREBASE_MESSAGING_SENDER_ID }}
      VITE_FIREBASE_APP_ID: ${{ secrets.VITE_FIREBASE_APP_ID }}
    steps:
      - name: checkout
        uses: actions/checkout@v4

      - name: setup-node
        uses: actions/setup-node@v4
        with:
          node-version: "20"
          cache: npm

      - name: install
        run: npm install && npm install -g firebase-tools

      - name: build
        run: npm run build
        env:
          VITE_SUPABASE_URL: ${{secrets.SUPABASE_URL}}
          VITE_SUPABASE_ANON_KEY: ${{secrets.SUPABASE_ANON_KEY}}

    # 環境変数を加えた部分②
      - name: firebase deploy
        run: firebase deploy --token $FIREBASE_TOKEN
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}

これらの環境変数を加えることで無事firebase deployもGitHub Actions上で通るようになりました。

firebase deployに使う環境変数の取得方法

Firebaseのconfig値系統

①firebaseのコンソールに移動する

②左側の歯車ボタンの「プロジェクトの設定」を押下する
image.png
③下記の部分に環境変数の値があるのでコピーする
スクリーンショット 2025-04-04 22.36.57.png

firebaseのトークン

参考記事

①ローカル環境でfirebase login:ciを叩く

②Oauth連携の画面が出るのでGoogleアカウントで認証する

③下記の画面がローカルで出てくる。赤線部分がFIREBASE_TOKENなのでGitHub上で環境変数として登録する
スクリーンショット 2025-04-04 22.50.01.png

まとめ

firebase deployがローカルでは通るのにGitHub Actionsでは通らないという時に見てみる事項として、

  • firebaseのinstallをyaml上で実現できているか
  • ローカルでも必要だったfirebaseの環境変数をyamlに記載してGitHub上で登録しているか
    といった部分を見てみるとエラーによる詰まりを減らせるはz
1
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?