我编写了一个用于设置env变量的脚本。
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应用程序无法读取env变量,我也没有在printenv中看到过。
我不想直接将env变量写入circle.yml文件,因为我希望动态更改prod_config.sh
,dev_config.sh
。
我该怎么做?
答案 0 :(得分:2)
每个单独的命令(以-
为前缀的行)都在自己的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
-Ricardo N Feliciano
开发者传播者,CircleCI