我在MacOS-HighSierra上使用Jenkins版本2.121.1和Pipeline . 我的项目依赖于登录服务器,这是一个Springboot工件,在本地运行,我想在构建之前启动它 . 我有一个shell脚本来启动登录服务器 . shell脚本在命令行中运行良好 . 当我在Jenkins的上下文中运行它时,它失败了 . 以下是runloginserver shell脚本中的代码:
nohup java -jar /absolute/path/login-module/login-api.jar >/dev/null 2>&1 &
在我的Jenkinsfile中,我将舞台定义如下:
stage('Launch-login') {
steps {
script{
withEnv(['JENKINS_NODE_COOKIE=dontkill']) {
sh '/absolute/path/runloginserver '
}
}
}
}
控制台输出没有错误 . 没有nohup.out生成 . 并且服务器尚未启动
1 回答
您可能正在遇到Jenkins ProcessTree Killer . 这是一个Jenkins "feature",可以在构建完成时终止构建期间启动的任何后台进程,即使进程是以nohup启动或以其他方式与其父进程分离 . 链接中有关于如何禁用此行为的说明 - 可以全局禁用,也可以仅针对特定进程禁用 .