[英]Setting node env variable in gitlab runner
我正在尝试使用 gitlab runner 来测试和构建我的节点服务器,但在尝试自动化测试时遇到了一个小问题。 在我的 package.json 我有脚本
"scripts": {
"start": "node app.js",
"test-init": "node ./node_modules/jasmine/bin/jasmine.js init",
"test": "set NODE_ENV=Dev&& node ./node_modules/jasmine/bin/jasmine.js"
},
所以NODE_ENV=Dev
将加载不同的设置文件。 使用 mongodb url "mongodb://mongo/DBName"
,当我在本地主机上运行npm test
时,服务器崩溃(正如它应该的那样),因为它无法使用开发设置文件连接到 mongo。 但是当我在运行程序上运行 GitLab 中的项目时,它不会连接到数据库,因为它使用具有 url 的非开发设置文件。 GitLab-ci 中是否有任何原因未设置 NODE_ENV? 下面是我的 GitLab-ci.yml
image: node:latest
stages:
- build
- test
cache:
paths:
- node_modules/
services:
- mongo
install_dependencies:
stage: build
script:
- npm install
artifacts:
paths:
- node_modules/
test_with_lab:
stage: test
script:
- npm run test-init
- npm test
这是因为在 gitlab 上运行的 docker 镜像是基于 linux 的,因此set
命令将不起作用。
有两种解决方案。
解决方案1
通过执行以下操作,使用此处记录的跨环境 npm 模块:
像这样安装跨环境:
npm install --save-dev cross-env
然后将您的 package.json 编辑为:
"scripts": {
"start": "node app.js",
"test-init": "node ./node_modules/jasmine/bin/jasmine.js init",
"test": "cross-env NODE_ENV=Dev node ./node_modules/jasmine/bin/jasmine.js"
},
解决方案2
只需为 linux 修改脚本,更快更简单。 这是它的外观。 注意 npm run test 将不再适用于 Windows。 为避免这种情况,请使用上述第一种解决方案。
"scripts": {
"start": "node app.js",
"test-init": "node ./node_modules/jasmine/bin/jasmine.js init",
"test": "NODE_ENV=Dev node ./node_modules/jasmine/bin/jasmine.js"
},
注意:从长远来看,解决方案 1更好,而解决方案 2很快但很脏
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.