Свежее развертывание Jenkins работает с использованием плагина развертывания контейнера, но происходит сбой при повторном развертывании.

Я хочу настроить свое веб-приложение, созданное maven, для создания и развертывания в рамках моей обычной работы.

Сборка работает нормально, однако использование плагина развертывания контейнера кажется ненадежным, поскольку новое развертывание работает, но повторное развертывание приложения не выполняется. Плагин не может быть развернут, когда приложение уже развернуто (война уже находится в каталоге веб-приложений). Чтобы было ясно, если я удалю войну и аннулирую все, а затем в сборке jenkins, она будет работать, как и ожидалось, но впоследствии они терпят неудачу. Сообщение об ошибке:

org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Encountered exception javax.management.RuntimeErrorException: Error invoking method check

Должен ли я вместо этого развертывать как часть самой сборки maven, используя deploy:deploy и добавляя раздел управления распространением?

Или это настройка Дженкинса, которую мне не хватает?


person NimChimpsky    schedule 30.01.2012    source источник


Ответы (5)


Была точно такая же проблема. Удивительно, но в моем случае помогли совсем другие вещи.

Просмотрел журналы Tomcat во время повторного развертывания и увидел OutOfMemory: Permgen space. Увеличение XX:PermSize и XX:MaxPermSize до 256 м в $CATALINA_HOME/bin/setenv.sh полностью решило эту проблему.

person Andrey Regentov    schedule 12.12.2013

Во-первых, плагин maven deploy не развертывает веб-приложение в контейнере. Он развертывает артефакт проекта в репозиторий maven. Таким образом, это не может быть использовано для ваших целей.

Во-вторых, обратитесь к этой проблеме, связанной с open jira. Это также предлагает решение/обходной путь.

person Raghuram    schedule 30.01.2012
comment
Cargo:redeploy отлично работает, переустанавливая военный файл на удаленный сервер tomcat7. Я разместил решение, которое сработало для меня в качестве ответа. - person NimChimpsky; 30.01.2012
comment
@НимЧимпски. Конечно, ссылка выше предлагает именно то же самое. Я чувствовал, что важно также прояснить вопрос о развертывании maven. - person Raghuram; 31.01.2012

перед развертыванием файла войны вы можете отменить развертывание существующего пакета, используя это. http://mojo.codehaus.org/tomcat-maven-plugin/undeploy-mojo.html Я думаю, вы можете добавить эту задачу в то же задание, прежде чем выполнять развертывание. Таким образом, вы все еще можете иметь CI, как вы ожидаете.

person Eshan Sudharaka    schedule 30.01.2012

Это также может произойти, если вы попытаетесь развернуть 2 приложения с одним и тем же корнем контекста в context.xml (но другим, определенным в jenkins при развертывании).

Пришлось вручную очистить /webapps и перезапустить сервер. Теперь снова работает.

person icyerasor    schedule 30.10.2014

Я делаю это https://stackoverflow.com/a/6524012/106261

Я могу либо вызвать cargo:redeploy в качестве шага после сборки, если я хочу, чтобы детали развертывания хранились в pom

Или я вызываю cargo:undeploy в качестве шага после сборки, а затем использую плагин развертывания контейнера для фактического развертывания с использованием настроек, которые я задал в jenkins.

person NimChimpsky    schedule 30.01.2012