Запусти кота из скрипта муравья
Я использую следующий скрипт ANT для запуска Tomcat:
<macrodef name="start-tomcat">
<sequential>
<exec executable="/bin/sh" >
<arg value="-c" />
<arg value='${tomcat.bin.dir}/startup.sh -Xms128M -Xmx512M' />
</exec>
</sequential>
</macrodef>
когда я запускаю скрипт запуска tomcat из оболочки, tomcat запускается нормально, и я вижу вывод, подобный этому:
Using CATALINA_BASE: /u/app
Using CATALINA_HOME: /u/app/3rdparty/apache-tomcat-6.0.33
Using CATALINA_TMPDIR: /u/app/temp
Using JRE_HOME: /usr/java/jre1.6.0_13
Using CLASSPATH: /u/app/3rdparty/apache-tomcat-6.0.33/bin/bootstrap.jar
У меня две проблемы:
- Как я могу сказать муравью показать вывод, как указано выше? Муравей показывает только вывод, когда есть ошибка.
- Когда я запускаю файл build.xml из оболочки с исполняемым файлом ant, tomcat запускается. при запуске файла сборки через CI-сервер - в частности, не запускается tomcat Дженкинс (Хадсон).
Мне трудно понять, как использовать <exec>
задача запуска сценариев оболочки, что-то я делаю не так?
Благодарю.
3 ответа
Проблема была связана с функцией Jenkins под названием ProcessTreeKiller
описано здесь.
По сути, Jenkins автоматически убивает все процессы, порожденные заданием, путем поиска в дереве процессов процессов с определенной переменной среды.
Все, что мне нужно было сделать, это переписать переменную jenkins env BUILD ID
и это сработало. Я использовал плагин Setenv, чтобы установить env var, специфичный для сборки.
Как насчет выполнения команды следующим образом:
<exec executable="bash" >
<arg value="-c" />
<arg value='nohup ${tomcat.bin.dir}/startup.sh -Xms128M -Xmx512M &' />
</exec>
Here is how you can stop tomcat from Ant script:
файл build.properties:
#----------------------------------------------------
#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
файл loadproperties
<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 :)