我在詹金斯(1.578版)做过一份精打细算的工作。下面的Maven片段(用Groovy代码编写的Ant脚本)启动了Fuse服务器,在工作完成后,我无法让Jenkins使其运行。
<profile> <id>start-fuse</id> <build> <plugins> <plugin> <groupId>org.codehaus.gmaven</groupId> <artifactId>gmaven-plugin</artifactId> <executions> <execution> <id>start-fuse</id> <phase>integration-test</phase> <goals> <goal>execute</goal> </goals> <configuration> <source> <![CDATA[ def fuseBinDirectory = '${fuse.dir}/bin' ant.exec(executable:'bash', dir:fuseBinDirectory, failonerror:true, osfamily:'unix') { ant.env(key:'BUILD_ID',value:'DO_NOT_STOP_MY_PROCESS_JENKINS') ant.env(key:'KARAF_OPTS',value:'${KARAF_OPTS}') ant.arg(value:"-c") ant.arg(value:"nohup ./start ${fuse.start.parameters} </dev/null >> nohup.out 2>&1&") } ]]> </source> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile>
我怎么了
如何在Windows下创建类似的Fuse进程,以使Jenkins不会杀死它?
添加接受的答案中提到的4个env条目在Windows和Linux上均适用。因此,无论您拥有哪种工作类型,都可以拥有以下内容:
ant.exec(executable:'sh', dir:fuseBinDirectory, failonerror:true, osfamily:'unix') { ant.env(key:'BUILD_ID',value:'DO_NOT_STOP_MY_PROCESS_JENKINS') ant.env(key:'HUDSON_SERVER_COOKIE',value:'DO_NOT_STOP_MY_PROCESS_JENKINS') ant.env(key:'JENKINS_COOKIE',value:'DO_NOT_STOP_MY_PROCESS_JENKINS') ant.env(key:'JENKINS_SERVER_COOKIE',value:'DO_NOT_STOP_MY_PROCESS_JENKINS') ant.env(key:'HUDSON_COOKIE',value:'DO_NOT_STOP_MY_PROCESS_JENKINS') ant.env(key:'KARAF_OPTS',value:'${KARAF_OPTS}') ant.arg(line:'-c "./start ${fuse.start.parameters}"') }
Nohup似乎根本不是必需的。
如果您在此页面中注意到用户’mdp’的注释,则将注意到在使用自由样式模板创建的作业的情况下,BUILD_ID确实起作用。还有许多其他人面临类似的问题。仅当这是一项非自由式工作时,才会看到此类问题。
或者,也应检查取消设置以下变量的设置:HUDSON_COOKIE,HUDSON_SERVER_COOKIE,JENKINS_COOKIE或JENKINS_SERVER_COOKIE,此链接很少有人评论(建议部分)。