我编写了一个用于设置环境变量的脚本。
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中看到。
我不想将环境变量直接写入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
关于node.js - Circleci - 无法读取脚本内定义的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44380338/