Circleci 从现有环境变量创建环境变量

Circleci create environment variable from existing env var

在 circle ci 仪表板中,我设置了环境变量,例如 DEV_USEFUl_API_KEY、PROD_USEFUL_API_KEY。然后在我的 circleci 配置文件 (v2.1) 中我这样做

- run:
    name: Run Tests
    command: |
      if [ "${CIRCLE_BRANCH}" == "master" ]; then
        echo 'export FIREBASE_API_KEY=${PROD_FIREBASE_API_KEY}' >> $BASH_ENV
      elif [[ "${CIRCLE_BRANCH}" == "develop" ]]; then
        echo 'export FIREBASE_API_KEY=${DEV_FIREBASE_API_KEY}' >> $BASH_ENV
      fi
      yarn test

我的测试 运行 时的想法是,将读取环境变量。我已经在我的节点应用程序 process.env 中打印出来,我可以看到变量 PROD_FIREBASE_API_KEY、DEV_FIREBASE_API_KEY 在环境中,但是没有预期的 FIREBASE_API_KEY。

我尝试将命令的语法更改为:

echo 'export FIREBASE_API_KEY=$PROD_FIREBASE_API_KEY' >> $BASH_ENV

还有

echo 'export FIREBASE_API_KEY="$PROD_FIREBASE_API_KEY"' >> $BASH_ENV

然而它没有任何区别,变量FIREBASE_API_KEY没有设置,任何人都可以请教吗?谢谢

解决方案是将 yarn test 放在另一个 运行 步骤中,因为在设置新的环境变量后需要重新加载 bash 配置文件(这发生在每个 运行).

      - run:
          name: Configure Environment Variables
          command: |
            if [ "${CIRCLE_BRANCH}" == "master" ]; then
              # Set env variables 
            elif [[ "${CIRCLE_BRANCH}" == "develop" ]]; then
              # Set env variables 
            fi
      - run:
          name: Run Tests
          command: |
            yarn test