詹金斯背景中的产卵过程 - 不会留在队列

时间:2016-11-22 14:58:57

标签: java shell jenkins continuous-integration wiremock

我想在启动服务器的Jenkins上工作(在WireMock上的MockServer)。

服务器从* .jar文件启动,从这样的终端启动。

java -jar serverLaunch.jar

它接管我的控制台。为了避免这种情况,我修改了它并执行:

java -jar serverLaunch.jar &>/dev/null &

这对我在我的本地PC上有用。现在我想把它移到詹金斯身上。

如果我尝试从" Shell命令"然后在Jenkins Job中阻止:

a)java -jar serverLaunch.jar

  • 我的Jenkins中的任务被锁定在队列中,我不想要,但服务器启动并运行。

b)java -jar serverLaunch.jar &>/dev/null &

  • 作业以成功结束,但我的服务器还没有活着。

我还在.sh脚本和.rb脚本中包装了这个命令。知道如何让它发挥作用吗?

我试过这个: https://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build

然后在Jenkins" Shell脚本":

daemonize -E BUILD_ID=dontKillMe /bin/bash launch.sh

但它也通过了,但服务器还不存在。

3 个答案:

答案 0 :(得分:3)

我必须检查"将环境变量注入构建过程"并添加:

  

BUILD_ID = dontKillMe

现在它正在运作。

答案 1 :(得分:0)

另一种有效的方法是添加构建后操作,执行产生服务器的shell。

答案 2 :(得分:-1)

尝试使用nohup例如: nohup java -jar serverLaunch.jar &

这应该可以防止在父shell进程退出时终止进程(我怀疑这是你的问题)。