在多作业项目中成功执行作业后,如何告诉詹金斯不要杀死进程?

dev*_*v ツ 5 jenkins

我有一个詹金斯综合项目

在第一阶段,我启动数据库并构建核心部分。

用于启动Mongodb的示例Shell命令:

/root/software/mongodb-linux-x86_64-2.6.3/bin/mongod&
Run Code Online (Sandbox Code Playgroud)

在第二阶段,我有各种各样的工作来建立一些客户。

在完成第一阶段的工作之后,启动了服务器并构建了核心部分。我看到日志-

Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build for more information
2016-08-26T20:23:00.815+0530 [signalProcessingThread] got signal 15 (Terminated), will terminate after current cmd ends
2016-08-26T20:23:00.833+0530 [signalProcessingThread] now exiting
2016-08-26T20:23:00.879+0530 [signalProcessingThread] dbexit: 
2016-08-26T20:23:00.903+0530 [signalProcessingThread] shutdown: going to close listening sockets...
2016-08-26T20:23:00.903+0530 [signalProcessingThread] closing listening socket: 7
2016-08-26T20:23:00.903+0530 [signalProcessingThread] closing listening socket: 8
2016-08-26T20:23:00.903+0530 [signalProcessingThread] removing socket file: /tmp/mongodb-27017.sock
Finished: SUCCESS
Run Code Online (Sandbox Code Playgroud)

这将停止所有数据库,并且第二阶段作业的构建将失败。

如何告诉詹金斯下班后不要杀死进程?

Jay*_*yan 6

Jenkins使用一种特殊的机制来清理子进程。它寻找与内部BUILD_ID版本号匹配的过程。您可以将其设置为不同的值,詹金斯将跳过杀死该过程。

从文档:

https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller

BUILD_ID=dontKillMe /your/mongodb/process
Run Code Online (Sandbox Code Playgroud)

或用于管道:

JENKINS_NODE_COOKIE=dontKillMe /your/mongodb/process
Run Code Online (Sandbox Code Playgroud)


dev*_*v ツ 2

根据@jayan 分享的文档,

您可以通过设置名为value的 Java 属性来禁用构建期间由作业生成的终止进程hudson.util.ProcessTree.disabletrue

这可以在启动 Jenkins 时作为“java”二进制文件的参数来完成:

 java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
Run Code Online (Sandbox Code Playgroud)