从ant脚本启动tomcat
我正在使用以下ANT脚本运行tomcat:从ant脚本启动tomcat,tomcat,ant,hudson,jenkins,Tomcat,Ant,Hudson,Jenkins,我正在使用以下ANT脚本运行tomcat: <macrodef name="start-tomcat"> <sequential> <exec executable="/bin/sh" > <arg value="-c" /> <arg value='${tomcat.bin.dir}/startup.sh -Xms128M -Xmx512
<macrodef name="start-tomcat">
<sequential>
<exec executable="/bin/sh" >
<arg value="-c" />
<arg value='${tomcat.bin.dir}/startup.sh -Xms128M -Xmx512M' />
</exec>
</sequential>
</macrodef>
我有两个问题:
任务来运行shell脚本,我有什么做错了吗
谢谢。像这样执行命令怎么样:
<exec executable="bash" >
<arg value="-c" />
<arg value='nohup ${tomcat.bin.dir}/startup.sh -Xms128M -Xmx512M &' />
</exec>
问题与Jenkins特性有关,该特性名为
ProcessTreeKiller
基本上,Jenkins会通过在流程树中搜索具有特定环境变量的流程,自动终止作业生成的所有流程
我所要做的就是覆盖名为buildid
的jenkins env变量,它就工作了。
我使用了一个函数来设置特定于构建的环境变量
Here is how you can stop tomcat from Ant script:
build.properties文件:
加载属性文件
+---------------------------------+
|T O M C A T S T O P E D|
+---------------------------------+
我还将一个名为spawn set的元素添加到了“false”,它将执行输出打印到控制台上。
希望这有帮助:)
我已找到问题2的原因。显然,当jenkins完成任务时,它会向构建和所有子进程发送一个kill信号,从而startup.sh
在它完成任何任务之前终止。我正在寻找一种方法,使tomcat进程在构建完成后保持不变。与发送一个nohup
信号有关。可能有效,因为我已经找到了一个不同的解决方案,所以没有尝试过,谢谢。@michael好吧,也许你应该回答自己的问题,然后按答案投票?:)
Here is how you can stop tomcat from Ant script:
#----------------------------------------------------
#Tomcat Configuration
#----------------------------------------------------
#Back-end Tomcat
tomcat.dir=${branch.dir}/../tomcat
tomcat.bin.dir=${tomcat.dir}/bin
tomcat.bootstrap.jar=${tomcat.bin.dir}/bootstrap.jar
tomcat.jvmarg=-Dcatalina.home
<property file="${basedir}/build.properties" />
<!-- Stop tomcat -->
<target name="stop-tomcat" description="Stops back-end tomcat server" depends="prepare">
<java jar="${tomcat.bootstrap.jar}" fork="true" spawn="false">
<jvmarg value="${tomcat.jvmarg}=${tomcat.dir}" />
<arg line="${arg.stop}" />
</java>
<echo>+---------------------------------+</echo>
<echo>| T O M C A T S T O P P E D |</echo>
<echo>+---------------------------------+</echo>
</target>
Also I have added an element called spawn set to "false", which print execution output onto console.
Hope this helps :)