我正在建立一个正在构建RESTful HTTP服务的团队。我们在设置Jenkins CI作业时遇到问题,该作业将构建服务,在后台运行,执行一些测试,然后终止服务器。
我们现在有一些类似的工作,但它不可靠。我们使用3个构建步骤:
第一个构建步骤是Execute Shell
步骤,其中包含以下命令:
npm install
npm test
node server.js ./test-config.json &
其次,我们执行Invoke Maven 3
步骤,指向测试pom.xml
。
第三,我们运行Invoke Standalone Sonar Analysis
来进行静态代码分析。
这大部分都有效,但我们依赖于Jenkins' ProcessTreeKiller在作业完成后停止服务。我们总是收到警告:Process leaked file descriptors. See
http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+buildfor
more information
不幸的是,我们有过这样的情况:服务很快终止(在测试完成之前)或服务根本没有终止(导致后续构建失败,因为端口已经在使用)。
所以我们需要更可靠的东西。
我们尝试设置一个shell脚本来处理启动服务,运行maven,终止服务,然后输出退出代码。但这并没有成功,因为mvn
命令在命令行中不可用。我们的Jenkins有多个maven版本(也有jdks版本),我不知道他们在奴隶身上的位置,或者如何在不使用Invoke Maven 3
构建步骤的情况下使用它们。
我们已经玩弄了一些解决这个问题的想法,但希望得到其他可能解决Jenkins类似问题的指导。
如果Jenkins有一个"构建后的动作"那将是很好的。让你运行一个清理脚本。或者,如果它有一个"执行后台进程"构建步骤将在构建结束时终止后台项目。但我找不到那样的东西。
有没有人设法让Jenkins像这样远程做任何事情?
答案 0 :(得分:3)
一些头脑风暴:
您可以全局或按次调用关闭Jenkins ProcessTreeKiller。我不确定为什么这不是你的选择。
在回应#2时,有几个选项:
您可以使用 Text-finder plugin
您可以设置 Conditional Build Steps 。 “条件”甚至可能是某些脚本执行的结果