В одном из проектов после выполнения clean install
Maven-ом необходимо выполнить внешний скрипт, который деплоит файлы проекта в каталог Tomcat-а.
Рассмотрим шаг запуска внешнего скрипта в TeamCity.
Скрипт выполняется BuildAgent
-ом, в данном случае – на машине с Windows (хотя сам сервер TeamCity работает под CentOS – но это роли не играет).
Переходим в настройки проекта, Configuration Steps > Build Steps и нажимаем Add build step:
Выбираем Runner type – Command line:
Заполняем поля:
В данном примере:
Execute step:
запускать файл deploy.bat
в случае если все предыдущие шаги были выполнены успешно;
Run:
исполняемый файл (внешний); можно выбрать Run: Custom script:
и вписать код в поле:
Command executable:
– сам скрипт, который необходимо выполнить.
В этом примере будет вполняться скрипт deploy.bat
, о котором упоминалось в статье Windows: bat-файл для остановки Tomcat с помощью taskkill.
При создании скриптов необходимо учитывать тот факт, что они будут выполняться из директории, в которую делался checkout
перед запуском билда. Можно указать другую, заполнив поле Working directory.
Сохраняем настройки и получаем новый build-step
:
Ещё один немаловажный момент – это использование переменных в скриптах. Переменные окружения можно задать в самой системе – но тогда потребуется перезапустить BuildAgent
, что бы он их применил.
Другой вариант – определить их в Step 7 – Build Parameters:
Теперь пора запустить билд и посмотреть лог выполнения:
…
[12:30:13]Step 2/2: Command Line (1m:31s)
[12:30:14][Step 2/2] Starting: C:OptTomcatsapache-tomcat-6.0.37_clear_installstartdeploy.bat
[12:30:14][Step 2/2] in directory: C:BuildAgentworkf09ebd51e34c758
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758>set CURR_DIR=C:BuildAgentworkf09ebd51e34c758
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758>set CATALINA_HOME=C:OptTomcatsapache-tomcat-6.0.37_clear_install
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758>echo C:BuildAgentworkf09ebd51e34c758
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758>echo C:OptTomcatsapache-tomcat-6.0.37_clear_install
[12:30:18][Step 2/2] C:OptTomcatsapache-tomcat-6.0.37_clear_install
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758>call C:OptTomcatsapache-tomcat-6.0.37_clear_installstart_config_.bat
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758>set ENV=AUTO
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758>set LOG4J=C:OptTomcatsapache-tomcat-6.0.37_clear_installstartlog4j.xml
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758>set OUTPUT_DIR=.
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758>set JAVA_HOME=C:Optjdk1.6.0_32x64
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758>set JRE_HOME=C:Optjdk1.6.0_32x64jre
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758>set JAVA_OPTS=-Xmx5024m -Xms512m -XX:MaxPermSize=2024m
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758>set CURR_DIR=C:BuildAgentworkf09ebd51e34c758
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758>type NUL 1>tomcatpid.txt
[12:30:18][Step 2/2] C:BuildAgentworkf09ebd51e34c758>tasklist /v /FI “IMAGENAME eq java.exe” | findstr /i “Tomcat” 1>tomcatpid.txt
[12:30:20][Step 2/2] C:BuildAgentworkf09ebd51e34c758>for /F “TOKENS=2” %a in (‘type tomcatpid.txt’) do (taskkill /PID %a )
[12:30:20][Step 2/2] C:BuildAgentworkf09ebd51e34c758>(taskkill /PID 4996 )
[12:30:20][Step 2/2] SUCCESS: Sent termination signal to the process with PID 4996.
[12:30:20][Step 2/2] C:BuildAgentworkf09ebd51e34c758>del tomcatpid.txt
[12:30:20][Step 2/2] C:BuildAgentworkf09ebd51e34c758>rmdir /S /Q C:OptTomcatsapache-tomcat-6.0.37_clear_installwebappsROOT
[12:30:49][Step 2/2] C:BuildAgentworkf09ebd51e34c758>mkdir C:OptTomcatsapache-tomcat-6.0.37_clear_installwebappsROOT
[12:30:49][Step 2/2] C:BuildAgentworkf09ebd51e34c758>for / %d in (C:BuildAgentworkf09ebd51e34c758app-webtargetapp-web-*) do (xcopy /S /E %d* C:OptTomcatsapache-tomcat-6.0.37_clear_installwebappsROOT )
[12:30:49][Step 2/2] C:BuildAgentworkf09ebd51e34c758>(xcopy /S /E C:BuildAgentworkf09ebd51e34c758app-webtargetapp-web-**.*** C:OptTomcatsapache-tomcat-6.0.37_clear_installwebappsROOT )
[12:30:49][Step 2/2] C:BuildAgentworkf09ebd51e34c758app-webtargetapp-web-**.**logout.jsp
…
[12:31:44][Step 2/2] 2321 File(s) copied
[12:31:44][Step 2/2] C:BuildAgentworkf09ebd51e34c758>call C:OptTomcatsapache-tomcat-6.0.37_clear_installbinstartup.bat
[12:31:44][Step 2/2] Using CATALINA_BASE: “C:OptTomcatsapache-tomcat-6.0.37_clear_install”
[12:31:44][Step 2/2] Using CATALINA_HOME: “C:OptTomcatsapache-tomcat-6.0.37_clear_install”
[12:31:44][Step 2/2] Using CATALINA_TMPDIR: “C:OptTomcatsapache-tomcat-6.0.37_clear_installtemp”
[12:31:44][Step 2/2] Using JRE_HOME: “C:Optjdk1.6.0_32x64jre”
[12:31:44][Step 2/2] Using CLASSPATH: “C:OptTomcatsapache-tomcat-6.0.37_clear_installbinbootstrap.jar”
[12:31:44][Step 2/2] Process exited with code 0