将环境变量部署到Firebase主机上

问题描述 投票:3回答:1

我在React中使用Firebase,当初始化Firebase时,我使用了从我的.env文件中获取的环境变量,并使用了 dotenv. 我想将我的React应用构建并部署到Firebase主机上,我使用GitHub Actions与以下.yml工作流文件。

name: Deploy
on:
  push:
    branches:
      - master

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Install Dependencies
        run: npm install
      - name: Build
        run: npm run build
      - name: Archive Production Artifact
        uses: actions/upload-artifact@master
        with:
          name: public
          path: public
  deploy:
    name: Deploy
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Download Artifact
        uses: actions/download-artifact@master
        with:
          name: public
      - name: Deploy
        uses: w9jds/firebase-action@master
        with:
          args: deploy --only hosting
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}

但是,我的构建步骤失败了(即 npm run build) 因为找不到环境变量。如果我硬编码而不是使用环境变量,工作流就会成功。

我是否需要将环境变量添加到 GitHub 的秘密中,就像我添加了 FIREBASE_TOKEN 并将它们添加到工作流中。

name: Deploy
on:
  push:
    branches:
      - master

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Install Dependencies
        run: npm install
      - name: Build
        run: npm run build
        env:
          FIREBASE_API_KEY: ${{ secrets.FIREBASE_API_KEY }}
          FIREBASE_AUTH_DOMAIN: ${{ secrets.FIREBASE_AUTH_DOMAIN }}
          FIREBASE_DATABASE_URL: ${{ secrets.FIREBASE_DATABASE_URL }}
          FIREBASE_PROJECT_ID: ${{ secrets.FIREBASE_PROJECT_ID }}
          FIREBASE_STORAGE_BUCKET: ${{ secrets.FIREBASE_STORAGE_BUCKET }}
          FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.FIREBASE_MESSAGING_SENDER_ID }}
          FIREBASE_APP_ID: ${{ secrets.FIREBASE_APP_ID }}
      - name: Archive Production Artifact
        uses: actions/upload-artifact@master
        with:
          name: public
          path: public
  deploy:
    name: Deploy
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Download Artifact
        uses: actions/download-artifact@master
        with:
          name: public
      - name: Deploy
        uses: w9jds/firebase-action@master
        with:
          args: deploy --only hosting
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}

我收到同样的错误,说它找不到API标记。

当我浏览其他基于Firebase的React应用中的工作流文件时,我看不到有人像我建议的那样添加这些环境变量。在部署到Firebase的应用程序中处理环境变量的正确方式是什么?它们是属于构建还是部署步骤?

firebase environment-variables continuous-deployment firebase-hosting github-actions
1个回答
0
投票

你的自定义环境变量必须以REACT_APP_开头。除了NODE_ENV之外,其他任何变量都将被忽略,以避免在机器上意外地暴露一个可能具有相同名称的私钥。请看一下这篇文章 添加自定义环境变量.

作为额外的说明,你也可以运行 npm run build 和你的env变量一起以这样的参数传递。

REACT_APP_FIREBASE_APIKEY=${{ secrets.REACT_APP_FIREBASE_APIKEY }} REACT_APP_FIREBASE_AUTHDOMAIN=${{ secrets.REACT_APP_FIREBASE_AUTHDOMAIN }} REACT_APP_FIREBASE_DBURL=${{ secrets.REACT_APP_FIREBASE_DBURL }} npm run build
© www.soinside.com 2019 - 2024. All rights reserved.