автозапуск остановка удаленного кота перед повторным развертыванием войны с помощью jenkins (плагин развертывания) - PullRequest
6 голосов
/ 03 февраля 2012

на данный момент jenkins строит мой проект, и в конце артефакт развертывается на удаленном коте через плагин jenkins deploy. проблема в том, что после нескольких повторных развертываний этот процесс завершается неудачно (иногда зависает tomcat или (не) происходит сбой развертывания). во всех случаях помогает остановка tomcat и удаление вручную.

Есть ли способ остановить tomcat перед сборкой / развертыванием, удалить старую войну и папку приложений и перезапустить tomcat, прежде чем плагин развертывания захочет развернуть артефакт?

спасибо заранее

Ответы [ 2 ]

2 голосов
/ 06 февраля 2012

Вы можете написать командный файл, который выполняет все перечисленные вещи:

  • stop tomcat
  • удалить файлы военных действий
  • снова запустить tomcat

Затем вы можете добавить новое задание до / после сборки в конфигурацию задания как выполнить пакет и просто указать его для запуска вашего пакетного файла.

Добавлено: Вы можете использовать PsExec - http://technet.microsoft.com/en-us/sysinternals/bb897553Это позволяет запускать процессы удаленно.Поместите пакет на удаленный компьютер, а с локального, используя Jenkins, запустите команду вот так: PsExec.exe \ xx.xx.xx C: \ MyScript.bat

1 голос
/ 09 февраля 2012

одно дополнение к принятому ответу: важно перенаправить вывод и вывод ошибок при вызове PsExec (у меня ушло 2 дня отладки). Смотри http://jenkins.361315.n4.nabble.com/remotely-executing-commands-td3476417.html

похоже, что при вызове из java (например, jenkins / tomcat) или .net PsExec зависает или завершает работу с ошибкой. поэтому вызов должен выглядеть так:

c:\someBatchWithPsExec.bat >>log.txt>&1

или явно при каждом вызове:

PsExec.exe -u [домен \ удаленный пользователь] -p [пароль] / accepteula \ remoteMachine net [остановка | запуск] Tomcat7 >> log.txt> & 1

Полагаю, если jenkins работает с доменом \ user, вам не нужно указывать это в команде ?! (только что попробовал, но это не сработало - команды net не работают)

...