繁体   English   中英

在 gitlab runner 中设置节点环境变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM