Jenkins中pipeline后台进程起不来的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/79637311

在普通的shell环境中,nohup,并且& 某个程序后,会抛到后台执行,在退出当前shell环境后,程序依然可以执行。但是在Jenkins的pipeline中,通过nohup,且使用&之后,step结束后,执行的程序还是会退出,导致程序起不来。

此前说过关于直接配置 job 这种问题的处理方法,链接:http://blog.csdn.net/catoop/article/details/48207219

直接使用以前的方法(修改BUILD_ID),对于pipeline来说是没有效果的,现在你可以使用修改 JENKINS_NODE_COOKIE 的值来解决问题,这样后续结束的时候,后面的sh程序就不会被kill掉了。
如下示例代码,是我的某个pipeline脚本片段:

......
stage('发布') {
    ansiColor('xterm') {
        sh "mkdir -p ${deploy_package_path}"
        sh "\\cp -Rf ${workspace_package_path} ${deploy_package_path}"
        // 停止Tomcat
        sh "${tomcat_home}/${JOB_NAME}/bin/kill.sh"
        // 启动Tomcat
        sh "JENKINS_NODE_COOKIE=dontKillMe ${tomcat_home}/${JOB_NAME}/bin/startup.sh"
        println("发布并重启Tomcat完成");
    }
}
......

截止本文适用版本:Jenkins 2.107.1 版本,后续版本升级可能会有差异或改动,如果新版本该方法不行,可能需要再找一下别的方法,新的方法欢迎留言共享给需要的朋友。

上一篇:神州数码牵手 OceanBase,共迎国产分布式数据库春天


下一篇:Java工程师知识图谱