在Concourse上,我正在运行集成测试,在其中运行某些npm脚本。有一个特定的脚本构建我的后端/前端,然后继续运行测试。但是一旦测试完成(失败或成功)。 npm脚本不停止。它不会出错并在测试失败或成功时无限期地挂起。我已经在本地机器和本地容器上运行这个脚本,并且npm脚本工作正常。只有在广场上,剧本永远挂起。npm脚本在CI大厅无限期挂起
为了让更多的上下文来我这里的设置是这是对前端运行
"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 in concourse会正常工作,但是运行npm run test:browser:ci会永久挂起,这进一步增加了混乱的问题。
大堂版本:3.3.2
部署类型(BOSH /泊坞/二进制):多克
基础设施/ IaaS的:AWS/EC2
浏览器(如果适用的话):铬
这是否曾用于工作?从不
你试过杀死的PID启动一次你的测试完成? 如果你在'npm run ci:test:system'下面添加一个回显行,你会看到输出吗? – materialdesigner
是的,我在'npm run ci:test:system'下面添加了一行,并且从未运行,因为脚本没有结束。由于该脚本运行测试,我不知道如何在测试期间终止pid – DoingItNow
您是否正在运行PhantomJS? – jtarchie