2016-07-14 44 views
0

我正在尝试运行http调用来测试将要在jenkins机器上运行的活动web api。如何让jenkins移动到下一阶段,如果它的“终端”被阻止?

这是使用的管道脚本。

stage 'build' 
    node { 
     git url: 'https://github.com/juliomarcos/sample-http-test-ci/' 
     sh "npm install" 
     sh "npm start" 
    } 
stage 'test' 
    node { 
     sh "npm test" 
    } 

但是詹金斯会不会移动到测试一步。如何在Web应用程序完全启动后运行npm test

回答

1

一种方法是在最后启动一个&网络应用程序,以便它将在后台运行。即

npm start &

您可以尝试NPM启动的输出重定向到一个文本文件是这样的:在下一步

npm start > output.txt &

然后,循环下去,直到“启动”消息可用的,是这样的:

tail -f output.txt | while read LOGLINE 
do 
    [[ "${LOGLINE}" == *"listening on port"* ]] && pkill -P $$ tail 
done 

代码没有测试:)

+0

如果我这样做,我怎么能确定测试只会在应用程序完成其启动过程后才开始? –

+0

看到我的编辑,它可能会有所帮助 –