【发布时间】:2017-08-09 22:57:40
【问题描述】:
在 Concourse 上,我正在运行某些 npm 脚本的集成测试。有一个特定的脚本可以构建我的后端/前端,然后继续运行测试。但是,一旦测试完成(失败或成功)。 npm 脚本不会停止。当测试失败或成功时,它不会出错并无限期地挂起。我已经在本地机器和本地容器上运行了这个脚本,并且 npm 脚本工作正常。只有在 Concourse 上,脚本才会永远挂起。
为了给我的设置提供更多背景信息,这里是一个在前端运行的 npm 脚本示例
"ci:start:backend": "npm run --prefix ../emailservice/mock-service dev & npm run --prefix ../server-repo ci:start:server & sleep 3"
"ci:test:system": "npm run ci:start:backend && npm run build:dist:serve & sleep 90 && npm run test:browser:ci"
npm run ci:test:system 是运行的主脚本。它会立即开始运行电子邮件服务、服务器和前端,以便运行测试。这是一种混乱的做事方式,但它适用于本地和容器。此方法已用于服务器测试的类似测试,并且在大厅上运行良好。
流水线的任务可见下图
# runs unit tests for frontend
- name: run-tests
plan:
- get: frontend-repo
- get: server-repo
- get: emailservice
- task: run-npm-tests
privileged: true
config:
platform: linux
image_resource:
type: docker-image
source:
repository: jonoc/techradar-integration
inputs:
- name: frontend-repo
- name: server-repo
- name: emailservice
run:
path: sh
args:
- -exc
- |
mongod --fork --logpath /var/log/mongodb.log
export SHELL=/bin/bash
cd server-repo
npm install --silent
cd ../emailservice/mock-service
npm install --silent
cd ../../frontend-repo
npm install --silent
npm rebuild node-sass --silent
npm run postinstall --silent
npm run ci:test:system
一切似乎都没有异常,但大厅拒绝提供绿色或红色的构建。我怀疑这是由于其他脚本永远运行但挂在后台并且大厅不想结束。然而,在大厅中运行 npm run ci:start:backend 可以正常工作,但运行 npm run test:browser:ci 将永远挂起,这进一步增加了问题的混乱。
大厅版本:3.3.2
部署类型(BOSH/Docker/二进制):Docker
基础设施/IaaS:AWS/EC2
浏览器(如果适用):Chrome
这曾经有效吗?从不
【问题讨论】:
-
您是否尝试过在测试完成后终止启动的 pid?如果在
npm run ci:test:system下方添加回显行,你看到输出了吗? -
是的,所以我在
npm run ci:test:system下方添加了一行,它永远不会运行,因为关于脚本的内容没有结束。由于该脚本运行测试,我不确定在测试期间如何杀死 pid -
您是否正在运行 PhantomJS?
-
不,我们正在运行量角器和无头 chrome
标签: node.js amazon-web-services npm concourse