Свежее развертывание Jenkins работает с использованием плагина развертывания контейнера, но завершается неудачно при повторном развертывании - PullRequest
4 голосов
/ 30 января 2012

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

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

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

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

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

Ответы [ 5 ]

4 голосов
/ 12 декабря 2013

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

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

1 голос
/ 30 октября 2014

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

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

1 голос
/ 30 января 2012

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

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

1 голос
/ 30 января 2012

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

0 голосов
/ 30 января 2012

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

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

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

...