我有一个jenkins multijob项目。
在第一阶段,我启动数据库并构建核心部分。
示例shell命令启动Mongodb:
/root/software/mongodb-linux-x86_64-2.6.3/bin/mongod&
在第二阶段,我有各种各样的工作来建立一些客户。
第一阶段工作后,启动服务器并构建核心部分。我看到了日志 -
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
这将停止所有数据库,并且构建对于阶段2作业失败。
如何告诉詹金斯不要在工作后杀死进程?
答案 0 :(得分:6)
Jenkins使用特殊机制来清理子进程。它查找BUILD_ID与内部版本号匹配的进程。您可以将其设置为不同的值,jenkins将跳过查杀过程。
来自文档..
https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller
BUILD_ID=dontKillMe /your/mongodb/process
答案 1 :(得分:1)
任何人面临同样的问题并使用管道项目,请设置JENKINS_NODE_COOKIE
而不是BUILD_ID
。
不要浪费时间设置HUDSON_COOKIE
,HUDSON_SERVER_COOKIE
,JENKINS_COOKIE
或JENKINS_SERVER_COOKIE
。它们都不适用于管道项目。
有关详细信息,请参阅https://issues.jenkins-ci.org/browse/JENKINS-28182。
答案 2 :(得分:0)
根据@jayan分享的文档,
您可以通过将名为hudson.util.ProcessTree.disable
的Java属性设置为值true
来禁用在构建期间由作业生成的查杀过程。
这可以作为" java"的参数来完成。启动Jenkins时的二进制文件:
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
答案 3 :(得分:0)
首先,在shell脚本中更新您的手动启动或停止命令,并在Jenkins管道脚本中使用以下行。
sh script: "JENKINS_NODE_COOKIE=dontKillMe && sh script.sh"