将环境变量部署到Firebase托管

时间:2020-03-21 11:37:28

标签: firebase environment-variables continuous-deployment firebase-hosting github-actions

我在React中使用Firebase,并且在初始化Firebase时,我使用从{.1v} .env文件中提取的环境变量。我想将我的React应用程序构建并部署到Firebase托管,我将GitHub Actions与以下.yml工作流文件一起使用:

dotenv

但是,由于找不到环境变量,因此构建步骤失败(即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

我收到相同的错误消息,提示它找不到API令牌。

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

1 个答案:

答案 0 :(得分:1)

您的自定义环境变量必须以REACT_APP_开头。除NODE_ENV以外的任何其他变量都将被忽略,以避免意外地在机器上公开可能具有相同名称的私钥。 请看一下这篇文章Adding Custom Environment Variables

作为附加说明,您还可以运行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