2017-08-09 48 views
0

在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

浏览器(如果适用的话):铬

这是否曾用于工作?从不

+0

你试过杀死的PID启动一次你的测试完成? 如果你在'npm run ci:test:system'下面添加一个回显行,你会看到输出吗? – materialdesigner

+0

是的,我在'npm run ci:test:system'下面添加了一行,并且从未运行,因为脚本没有结束。由于该脚本运行测试,我不知道如何在测试期间终止pid – DoingItNow

+0

您是否正在运行PhantomJS? – jtarchie

回答

0

我的问题是改变了我的NPM脚本解决。原来链接npm run --prefix ../emailservice/mock-service dev & npm run --prefix ../server-repo ci:start:server & sleep 3与其他脚本导致Concourse上的一些问题。

我修改了故宫脚本中使用npm-run-all,并使用-r参数来完成了剧本的时候我的测试完成后

0

是否确定您的资源在任务泊坞窗容器中可用?

您在此处指定多个输入

- name: frontend-repo 
- name: server-repo 
- name: emailservice 

但是大厅要求您指定为每个输入正确的路径,如果你有一个以上的。

尝试在执行后劫持任务容器,并检查资源是否可用。您也可以在容器中执行该脚本,以便更轻松地进行调试。

fly -t <your_target> hijack -j demo_job/demo_task

+0

资源在容器中可用,因为我可以输入每个输入并运行npm脚本 – DoingItNow