我正在寻找一种使用Jenkins声明性管道在后台运行Java进程的方法。下面是代码片段
stage('Deploy'){
steps{
script{
withEnv(['BUILD_ID=dontkill']) {
sh "nohup java -jar test-0.0.1-SNAPSHOT.war &"
}
}
}
}
已经知道詹金斯(Jenkins)的ProcessTreeKiller,并且每个答案都建议这样做。我尝试在步骤块内使用环境没有运气。
Jenkins版本:2.60.1
管道插件:1.1.7
任何帮助是极大的赞赏。
怎么了?错误信息?沉默失败?
—
B层
我没有正在运行的Java进程。这是我开发流程的最后阶段,所以我想詹金斯会启动它并在下一刻终止它。
—
Dharanidhar
当直接在从站上运行命令时会发生什么?登录到代理程序/从属主机,转到作业的工作空间(或者,如果已将其手动清除到war文件中的副本中
—
B层
/tmp
,例如... ),然后运行双引号之间的所有内容。
另外,如果没有清除工作空间,请在将运行shell命令的任何目录中查找名为nohup.out的文件。如果未以其他方式重定向输出,则nohup将自动记录到此类文件。
—
B层
@BlairM当我通过非登录非交互式shell与jenkins用户一起尝试时,同一脚本运行良好。用双引号运行没有区别。nohup.out存在,但为0 KB。
—
Dharanidhar