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
- 我在我的 Jenkins 中将任务锁定在队列中,我不想这样,但服务器启动并工作。
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 生成服务器。
我想在启动服务器的 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
- 我在我的 Jenkins 中将任务锁定在队列中,我不想这样,但服务器启动并工作。
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 生成服务器。