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

Posted

技术标签:

【中文标题】Circleci 从现有的环境变量创建环境变量【英文标题】:Circleci create environment variable from existing env var 【发布时间】:2021-11-09 12:47:03 【问题描述】:

在圆形 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 没有设置,有人可以请教吗?谢谢。

【问题讨论】:

您可以尝试在您的管道中记录“$CIRCLE_BRANCH”的值吗?我认为你的 if 和 else if 条件都没有满足,所以它甚至不会去那里。或者尝试使用相同的命令添加 else 条件 它的值是master。 CIRCLE_BRANCH: 'master' 用“”代替“” 请问在哪一部分? @猎户座 echo "export FIREBASE_API_KEY=$PROD_FIREBASE_API_KEY" >> $BASH_ENV 【参考方案1】:

解决方案是将纱线测试放在另一个运行步骤中,因为它需要在设置新的环境变量后重新加载 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

【讨论】:

以上是关于Circleci 从现有的环境变量创建环境变量的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Heruku 帐户之间的 circleci 中分离环境?

eclipse 出错,环境变量配置好了,有的时候可以用,有的时候就会报如下错误为啥

java环境变量设置路径成功后在cmd中还是存在问题

Serverless.yml:在另一个中引用现有的环境变量

用于公共存储库的 CircleCI 2.0 私有环境密钥

java jdk环境变量标准配置