在 Github Actions 中注入 .env.local 文件或自定义环境变量集到 yarn build

Posted

技术标签:

【中文标题】在 Github Actions 中注入 .env.local 文件或自定义环境变量集到 yarn build【英文标题】:Inject .env.local file or custom set of environment variables to yarn build in Github Actions 【发布时间】:2020-08-28 17:05:29 【问题描述】:

我有一个 github 操作,它正在构建 React 应用程序(基于 create-react-app)并将其部署到 AWS S3。我必须传递一些环境变量才能正确运行yarn build 命令。

我可以将它们直接保存在.env 文件中,但我不想将它们保存在存储库中。目前我只是在yarn build 命令之前添加环境变量,但这是一个烦人的解决方案,似乎有点hacky。理想情况下,我想用我自己的配置注入.env.local 文件,但我不知道该怎么做。

这是我的build.yml 文件:

name: Build
on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [12.13.1]
    steps:
      - uses: actions/checkout@v1
      - name: Use Node.js $ matrix.node-version 
        uses: actions/setup-node@v1
        with:
          node-version: $ matrix.node-version 
      - name: Yarn install
        run: yarn install
      - name: Build
        run: REACT_APP_GRAPHQL_URL=https://some.url/graphql CI=false yarn build
      - name: Deploy to S3
        uses: jakejarvis/s3-sync-action@master
        with:
          args: --acl public-read --delete
        env:
          AWS_S3_BUCKET: my-bucket-name
          AWS_ACCESS_KEY_ID: $ secrets.AWS_ACCESS_KEY_ID 
          AWS_SECRET_ACCESS_KEY: $ secrets.AWS_SECRET_ACCESS_KEY 
          AWS_REGION: $ secrets.AWS_REGION 
          SOURCE_DIR: "build"

如您所见,魔法发生在这里:

run: REACT_APP_GRAPHQL_URL=https://some.url/graphql CI=false yarn build

我怎样才能让它看起来更好看?我有两个变量是可以的,但如果我有几十个呢?

顺便说一句 - 它是一个私人存储库,如果它有什么不同的话。 而且我不想使用其他 CI 解决方案,目前 Github Actions 对我来说似乎已经足够了。

【问题讨论】:

看起来这个问题已经在这里回答了***.com/questions/61117865/… 【参考方案1】:

你可以这样变魔术,

name: Build
on:
  push:
    branches:
      - master
env: 
  CI : false
  REACT_APP_GRAPHQL_URL : https://some.url/graphql 
jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [12.13.1]
    steps:
      - uses: actions/checkout@v1
      - name: Use Node.js $ matrix.node-version 
        uses: actions/setup-node@v1
        with:
          node-version: $ matrix.node-version 
      - name: Yarn install
        run: yarn install
      - name: Build
        run: yarn build
      - name: Deploy to S3
        uses: jakejarvis/s3-sync-action@master
        with:
          args: --acl public-read --delete
        env:
          AWS_S3_BUCKET: my-bucket-name
          AWS_ACCESS_KEY_ID: $ secrets.AWS_ACCESS_KEY_ID 
          AWS_SECRET_ACCESS_KEY: $ secrets.AWS_SECRET_ACCESS_KEY 
          AWS_REGION: $ secrets.AWS_REGION 
          SOURCE_DIR: "build"

我觉得这样更好看

【讨论】:

以上是关于在 Github Actions 中注入 .env.local 文件或自定义环境变量集到 yarn build的主要内容,如果未能解决你的问题,请参考以下文章

带有 Github Actions 的 env 文件

Github Actions - 如何使我的 env 变量(存储在 .env 文件中)在我的工作流程中可用

如何在 GitHub Actions 中使用 bash 表达式设置 env var?

使用 Github Actions 部署 Firebase Cloud 函数时的环境变量

github actions firebase 没有项目活动,但项目别名可用

iOS- 如何在运行时使用Google Cloud Storage在gitHub工作流程中注入gc_keys.json文件?