当前位置:  开发笔记 > 编程语言 > 正文

如何使用Jenkins运行,测试和终止HTTP服务器?

如何解决《如何使用Jenkins运行,测试和终止HTTP服务器?》经验,为你挑选了0个好方法。

我正在建立一个正在构建RESTful HTTP服务的团队.我们在设置Jenkins CI作业时遇到问题,该作业将构建服务,在后台运行,执行一些测试,然后终止服务器.

细节

服务器使用hapi框架在Node.js中构建,并且有一些用mocha编写的单元测试.

测试是使用Maven用Java编写的.(为什么不进行基于node.js的测试?因为我们的测试部门已经投入时间来创建基于Java的REST测试框架.)

如果基于节点的单元测试失败或者java测试失败,则构建应该失败.

我们的Jenkins盒子由公司其他地方的支持团队运营; 我们的构建在Linux从属上执行.

目前的尝试

我们现在有一些类似的工作,但它不可靠.我们使用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类似问题的指导.

    一段时间后服务会自行终止.问题在于弄清楚让他们跑多久.

    完成后添加构建步骤以终止服务.问题是如果maven执行失败,后续步骤将不会运行.(如果我们告诉maven忽略测试失败,那么如果构建失败,则构建不会显示为已损坏.)

    尝试删除任何现有的服务进程作为构建的第一步和最后一步.问题是其他团队也使用这些Jenkins从属设备,因此我们需要确保在完成构建时终止服务.

    通过Maven开始和停止node.js服务做类似博客的建议.问题是我们不知道Jenkins是否会将生成的后台任务识别为"泄漏的文件描述符"并在我们完成测试之前将其终止.

如果Jenkins有一个"Post-build action"可以让你运行一个清理脚本,那就太好了.或者,如果它有一个"执行后台进程"构建步骤,它会在构建结束时终止后台项目.但我找不到那样的东西.

有没有人设法让Jenkins像这样远程做任何事情?

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有