从詹金斯启动脚本的正确方法是什么,不要让构建挂起,并让进程保持运行?我似乎无法让它发挥作用。脚本不运行或构建挂起。
如果我放入构建的“执行 shell”步骤bash relaunch.sh &
or relaunch.sh > output.log &
or nohup bash relaunch.sh &
,
什么都没发生;构建完成,但进程未运行。我想这可能与詹金斯等待有关要关闭的错误管道 https://stackoverflow.com/a/30627285/5961990.
If I do
nohup bash relaunch.sh 2>&1 > output.log
按照建议here https://stackoverflow.com/questions/28319984/how-can-i-call-shell-script-to-start-a-backend-java-process,输出被正确重定向,但构建挂起(未完成),并且当我终止构建时进程终止。
Adding export BUILD_ID=dontKillMe
,按照建议here https://stackoverflow.com/questions/14584933/jenkins-kills-jboss-server-when-job-finishes, here https://serverfault.com/questions/502593/starting-a-forever-process-in-a-jenkins-build-step, and here https://stackoverflow.com/questions/9567441/jenkins-seems-to-be-the-target-for-nohup-in-a-script-started-via-ssh-how-can-i,无论是“执行 shell”步骤还是脚本本身都没有帮助。当我终止构建时,构建挂起并且进程终止。不用说,我对linux的了解非常有限。
人们如何以干净的方式做到这一点?
实现此目的的一个便捷方法是更改环境变量BUILD_ID
under 执行外壳 which Jenkins's
进程树杀手 https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller在寻找。
通过做,
BUILD_ID=dontKillMe nohup bash relaunch.sh &
詹金斯将假设后台作业不是由构建产生的,并且在完成作业后不会杀死它们。
谢谢Joshua https://stackoverflow.com/users/436336/joshua根据他的观察,你也可以使用JENKINS_NODE_COOKIE
as
JENKINS_NODE_COOKIE=dontKillMe
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)