circleci - 无法读取脚本中定义的环境变量

circleci - cannot read env variables defined inside script

我写了一个脚本来设置环境变量。

export DB_HOST='127.0.0.1'
export DB_USER='ubuntu'
export DB_PWD=''
export DB_NAME='circle_test'

我的circle.yml看起来像这样

machine:
  timezone: Asia/Taipei
  services:
    - mysql

dependencies:
  pre:
    - sudo apt-get update
    - nvm install 7.9 && npm install

test:
  pre:
    - source ./config/test_config.sh
    - sh ./config/test_config.sh
    - pwd
    - printenv
  override:
    - nvm use 7.9 && npm test

我的 nodejs 应用程序无法读取环境变量,我也没有在 printenv 中看到。

我不想直接把env变量写入circle.yml文件,因为我想prod_config.shdev_config.sh动态变化

我该怎么做?

每个单独的命令(以 - 为前缀的行)在它自己的 shell 中是 运行。这就是为什么在以下命令中不存在您提供的环境变量的原因。我看到了三种解决方法:

1) 在 circle.yml 中定义您的环境变量。我知道你说过你不想这样做,但这是迄今为止最简单明了的方法。

2) 您可以在需要变量的行前加上 source 命令。例如:

test:
  override:
    - source ./config/test_config.sh; nvm use 7.9 && npm test

3) 利用多行 YAML:

test:
  override:
    - >
      source ./config/test_config.sh
      nvm use 7.9 && npm test

4) 或者将所有命令放在 Bash 文件中,只 运行 该脚本:

test:
  override:
    - ./all-commands-script.sh

-里卡多·N·费利西亚诺
开发布道者,CircleCI