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

Set env variables in a github action before deploying to firebase hosting

我有一个 React 应用程序,它使用 Firebase 提供的自动部署 Github 操作。我的问题是我没有将我的 .env 文件推送到 Github,因此当工作流脚本文件在 [=35] 中运行 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

然后我还创建了一个名为 env 的环境,并在 actions -> environment secrets 上添加了相同的内容,并将脚本更改为:

REACT_APP_GOOGLE_MAPS_API_KEY=${{env.REACT_APP_GOOGLE_MAPS_API_KEY}} yarn && yarn build

这些都不起作用; env vars 没有捆绑到项目中,当我尝试在实时 link 上加载地图时出现错误,因为“缺少 api 键”。

如何在 github 中设置 secrets/variables 然后在我的工作流脚本中使用它们?

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

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 # I added my vars here, before `yarn` #
      - uses: FirebaseExtended/action-hosting-deploy@v0
        with:
          repoToken: "${{ secrets.GITHUB_TOKEN }}"
          firebaseServiceAccount: "${{ secrets.FIREBASE_SERVICE_ACCOUNT_WEBPAGE_NAME }}"
          projectId: webpage_name

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

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

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:
    ...

作业:作业的所有步骤都可用。

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:
      ...

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

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 }}

对于您的情况,因为您在 yarn build 期间只需要 API 键,最好在步骤中声明它。

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