在部署到 firebase 托管之前在 github 操作中设置环境变量

cre*_*lus 9 github firebase reactjs firebase-hosting github-actions

我有一个 React 应用程序,它利用 Firebase 提供的自动部署 Github 操作。我的问题是,我没有将文件推送到 Github,因此当工作流脚本文件在 Github 操作中.env运行时,我的代码中没有内置环境变量。yarn build

我尝试通过在存储库的 Github 设置上设置变量来解决这个问题。我尝试了 Github 秘密(在“操作”下)和“环境”。

对于操作 -> 存储库机密,我设置了一个名为 的机密REACT_APP_GOOGLE_MAPS_API_KEY,并将以下脚本添加到我的steps

REACT_APP_GOOGLE_MAPS_API_KEY=${{secrets.REACT_APP_GOOGLE_MAPS_API_KEY}} yarn && yarn build
Run Code Online (Sandbox Code Playgroud)

然后我还创建了一个名为 的环境env,并在操作 -> 环境机密上添加了相同的环境,并将脚本更改为:

REACT_APP_GOOGLE_MAPS_API_KEY=${{env.REACT_APP_GOOGLE_MAPS_API_KEY}} yarn && yarn build
Run Code Online (Sandbox Code Playgroud)

这些都不起作用;环境变量没有捆绑到项目中,当我尝试在实时链接上加载地图时,由于“缺少 api 密钥”,我收到错误。

如何在 github 中设置秘密/变量,然后在我的工作流程脚本中使用它们?

作为参考,这是您从 firebase 获得的样板脚本:

REACT_APP_GOOGLE_MAPS_API_KEY=${{secrets.REACT_APP_GOOGLE_MAPS_API_KEY}} yarn && yarn build
Run Code Online (Sandbox Code Playgroud)

Dav*_*uel 11

您可以在三个级别定义环境变量:

工作流程:在整个工作流程中可用。

name: Deploy to Firebase Hosting on PR
on: pull_request
env:
  REACT_APP_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_APP_GOOGLE_MAPS_API_KEY }}
jobs:
  build_and_preview:
    ...
Run Code Online (Sandbox Code Playgroud)

工作:在工作的所有步骤中都可用。

name: Deploy to Firebase Hosting on PR
on: pull_request
jobs:
  build_and_preview:
    if: "${{ github.event.pull_request.head.repo.full_name == github.repository }}"
    runs-on: ubuntu-latest
    env:
      REACT_APP_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_APP_GOOGLE_MAPS_API_KEY }}
    steps:
      ...
Run Code Online (Sandbox Code Playgroud)

步骤:仅在作业中的特定步骤中可用。

name: Deploy to Firebase Hosting on PR
on: pull_request
jobs:
  build_and_preview:
    if: "${{ github.event.pull_request.head.repo.full_name == github.repository }}"
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - run: yarn && yarn build
        env:
          REACT_APP_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_APP_GOOGLE_MAPS_API_KEY }}
Run Code Online (Sandbox Code Playgroud)

对于您的情况,由于您只需要在 期间使用 API 密钥yarn build,因此在该步骤中声明它将是最佳选择。

参考: https: //docs.github.com/es/actions/learn-github-actions/environment-variables