5

我会尽量说清楚。我也询问过相关问题,但没有得到令人信服的答复。
我正在使用Reactfirebase进行托管。
此外,我将我的firebase Web API 密钥存储在我的.env文件中。
我使用 Firebase CLI 设置了 Firebase 托管,并选择在合并或拉取请求时自动部署。
设置完成后,在我的工作目录中创建了一个.github包含文件的文件夹。.yml

   .github
      - workflows
          -firebase-hosting-merge.yml
          -firebase-hosting-pull-request.yml

firebase deploy因此,现在当我通过运行一切正常并将我的项目(不推送到 GitHub)手动部署到 Firebase 时,我的应用程序已启动并正在运行。
但是,当我进行更改并将更改推送到 Github 时。触发 Github 操作并开始自动部署到 firebase 进程。构建通过了所有检查。但是,当我访问托管 URL 时,我在控制台中遇到一个错误,说我尝试了一些解决方法,例如将我的 firebase Web API 密钥存储到 Github 机密中并在我的文件中访问它。在此处输入图像描述

Your API key is invalid, please check you have copied it correctly.
.yml

# This file was auto-generated by the Firebase CLI
# https://github.com/firebase/firebase-tools
 
name: Deploy to Firebase Hosting on merge
'on':
  push:
    branches:
      - master
jobs:
  build_and_deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - run: npm ci && npm run build --prod
      - uses: FirebaseExtended/action-hosting-deploy@v0
        with:
          repoToken: '${{ secrets.GITHUB_TOKEN }}'
          firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_EVENTS_EASY }}'
          channelId: live
          projectId: my-project
        env:
          REACT_APP_API_KEY: ${{secrets.REACT_APP_API_KEY}}
          FIREBASE_CLI_PREVIEWS: hostingchannels

但我仍然收到错误消息。我觉得这个错误肯定是环境变量造成的。
我已将我的 firebase Web API 密钥存储在.env.production位于根目录的文件中。不知何故,GitHub 操作没有使用我定义的环境变量。
请让我知道如何管理我的环境变量,以便我的工作流程可以访问它。

4

2 回答 2

11

答案是在工作之前将自定义环境变量放在第一级:

name: Deploy to Firebase Hosting on merge
'on':
  push:
    branches:
      - master

env: # <--- here
  REACT_APP_API_KEY: ${{secrets.REACT_APP_API_KEY}} # <--- here

jobs:
  build_and_deploy:
...

并在 Github > 你的项目 > 设置 > 秘密中添加这个秘密

于 2021-03-03T23:44:20.433 回答
0

您可以使用Create Envfile Github Action在您的工作流程中创建一个 .env 文件。

要向 envfile 添加密钥,请将密钥/对添加到该with:部分。它必须以envkey_.

steps:
  - uses: actions/checkout@v2
  - name: Use Node.js
    uses: actions/setup-node@v1
  - name: Make envfile
    uses: SpicyPizza/create-envfile@v1
    with:
      envkey_REACT_APP_API_KEY: ${{secrets.REACT_APP_API_KEY}}
      directory: './'
      file_name: '.env'
于 2021-03-31T03:58:42.083 回答