我想在启动服务器的Jenkins上工作(在WireMock上的MockServer)。
服务器从* .jar文件启动,从这样的终端启动。
java -jar serverLaunch.jar
它接管我的控制台。为了避免这种情况,我修改了它并执行:
java -jar serverLaunch.jar &>/dev/null &
这对我在我的本地PC上有用。现在我想把它移到詹金斯身上。
如果我尝试从" Shell命令"然后在Jenkins Job中阻止:
a)java -jar serverLaunch.jar
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
但它也通过了,但服务器还不存在。
答案 0 :(得分:3)
我必须检查"将环境变量注入构建过程"并添加:
BUILD_ID = dontKillMe
现在它正在运作。
答案 1 :(得分:0)
另一种有效的方法是添加构建后操作,执行产生服务器的shell。
答案 2 :(得分:-1)
尝试使用nohup例如:
nohup java -jar serverLaunch.jar &
这应该可以防止在父shell进程退出时终止进程(我怀疑这是你的问题)。