从詹金斯开始和停止一个罐子

时间:2013-09-16 09:18:11

标签: java shell batch-file jenkins executable-jar

过去几周我一直在jenkins服务器上工作。现在它运行良好的构建并将文件输出到远程位置。但是,我希望在文件上传之前对文件进行一些通过或失败测试。这样我就可以避免发布我工作的破碎版本。同时避免更多我不需要阅读的错误报告。

我想要运行的文件实际上是另一个程序的插件。所以我需要实际启动这个程序,因为我可以事先配置所有文件。该程序是一个.jar文件,我知道我可以使用一大堆shell脚本启动它。问题是我现在还不知道如何在运行后终止.jar程序。我发现的所有解决方案都要求我修改jar以终止自身,或者杀死JVM。我不能因各种原因而到期。

2 个答案:

答案 0 :(得分:0)

这是一个沉重的攻击,但你可以让shell脚本启动一个后台线程来检查JVM是否完成,然后终止它。

bash中的基本示例:

start_jvm_command >>console.log 2>&1 </dev/null &
while ! grep 'done signal' console.log; do sleep 1; done
pkill -f "regexp for start_jvm_command"

注意:我使用pkill终止以避免包装shell脚本。

答案 1 :(得分:0)

自从我问这个问题已经一年了,但我找到了一个更好的方法来解决这个问题。它叫做JUnit,是java的测试库。有了它,我不需要发射整个罐子,但可以通过和平一次测试和平。如果要求我可以写一个测试来启动整个.jar文件。在测试中,我可以检查文件是否存在,函数是否正确完成,以及是否在运行时抛出任何错误。