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.sh
、dev_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
我写了一个脚本来设置环境变量。
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.sh
、dev_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