Jenkins 后台的生成过程 - 不会排队的工作

Spawning process in background on Jenkins - job that won't stay in queue

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

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

java -jar serverLaunch.jar

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

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

这适用于我的本地 PC。现在我想把它移到 Jenkins。

如果我尝试从 Jenkins Job 中的 "Shell command" 块执行此操作,则:

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 script":

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

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

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

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

我必须检查 "Inject environment variables to the build process" 并添加:

BUILD_ID=dontKillMe

现在可以使用了。

另一种有效的方法是添加一个 post-build 操作 来执行 shell 生成服务器。