Node.js circleci-无法读取脚本中定义的环境变量
我编写了一个设置环境变量的脚本Node.js circleci-无法读取脚本中定义的环境变量,node.js,circleci,Node.js,Circleci,我编写了一个设置环境变量的脚本 export DB_HOST='127.0.0.1' export DB_USER='ubuntu' export DB_PWD='' export DB_NAME='circle_test' 我的圆圈是这样的 machine: timezone: Asia/Taipei services: - mysql dependencies: pre: - sudo apt-get update - nvm install 7.9
export DB_HOST='127.0.0.1'
export DB_USER='ubuntu'
export DB_PWD=''
export DB_NAME='circle_test'
我的圆圈是这样的
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\u config.sh
、dev\u 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) 或者将所有命令放在其on Bash文件中,然后运行该脚本:
test:
override:
- ./all-commands-script.sh
-里卡多·费利西亚诺开发者布道者,CircleCI谢谢@FelicianoTech,我在CircleCI论坛上发布了同样的问题。抱歉再次打扰你。顺便说一句,能从circleci团队得到及时的回答真是太好了:)一点也不麻烦。在两地发帖都是有益的。您获得答案的机会加倍,加上堆栈溢出意味着未来用户对该问题的可见性更高。