Как использовать hudson + maven + cargo для развертывания приложения на сервере jboss? - PullRequest
1 голос
/ 31 января 2011

Я бы хотел использовать hudson с плагином maven для развертывания приложения на сервере Jboss 6 следующим образом:

  1. Хадсон вызывает задачи maven clean install
  2. В файле pom.xml естьопределенный грузовой плагин (версия 1.0.6)
  3. Грузовой плагин определил повторное развертывание выполнения для фазы установки с остановкой и запуском целей (в этом порядке)

Все отлично работает - проекточищается и затем устанавливается, затем сервер jboss останавливается (с помощью cargo: stop) и запускается снова (с помощью cargo: start).Во время начальной цели - война с моим проектом, развернутым в jboss.Когда я тестирую свой веб, он работает и все изменения присутствуют.

Единственная проблема заключается в том, что после запуска сервера Jboss maven не завершает свою работу успешно, потому что он показывает сообщение "[INFO] НажмитеCtrl-C, чтобы остановить контейнер ... "и ждет нажатия Ctrl-C.Это стандартный груз: начальное поведение.В результате работа Хадсона не заканчивается успешно.

Сейчас я прошу какой-то обходной путь для этой небольшой проблемы.Мне понадобилось много времени (около 16 часов), чтобы добраться до этого состояния, и я не был бы рад, если бы мне пришлось полностью его переделывать.

Мои идеи, как это могло произойти (но я не смог ничего гуглитьполезно):

  • заставить Хадсона запускать задачу maven в фоновом режиме
  • заставить груз запускать jboss в фоновом режиме (некоторые spawn, fork, параметр jvm, аргумент времени выполнения jboss)
  • заставляет maven запускать задачу в фоновом режиме

Причина, по которой я пробую это решение, заключается в том, что я хочу, чтобы jboss постоянно работал на сервере, а опция удаленного развертывания груза мне не подходит,потому что он использует слишком много системных ресурсов.Это решение должно быть хорошо для установки проекта, а затем перезапустить сервер (стоп - старт).

Спасибо за любую помощь.Вот моя конфигурация грузового плагина:

<plugin>
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <version>1.0.6</version>
            <configuration>
                <container>
                    <containerId>jboss6x</containerId>
                    <append>false</append>
                    <timeout>300000</timeout>
                    <home>/atteq/jboss</home>
                </container>
                <configuration>
                    <properties>
                        <cargo.servlet.port>8080</cargo.servlet.port>
                        <cargo.jboss.configuration>atteq-minimal</cargo.jboss.configuration>
                        <cargo.logging>high</cargo.logging>
                        <cargo.rmi.port>1099</cargo.rmi.port>
                        <cargo.jvmargs>-XX:PermSize=512m -XX:MaxPermSize=1024
                        -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled
                        -XX:+CMSClassUnloadingEnabled</cargo.jvmargs>
                        <cargo.runtime.args>--host 0.0.0.0</cargo.runtime.args>

                    </properties>
                        <type>existing</type>
                    <home>/atteq/jboss/server/atteq-minimal</home>
                <deployables>
                    <deployable>
                        <groupId>roztocto</groupId>
                        <artifactId>roztocto</artifactId>
                        <type>war</type>
                    </deployable>
                </deployables>

                    </configuration>
                </configuration>
            <executions>
                <execution>
                    <id>redeploy</id>
                    <phase>install</phase>
                    <goals>
                        <goal>stop</goal>
                        <goal>start</goal>
                    </goals>
                </execution>
            </executions> 
            <dependencies>
                    <dependency>
                        <groupId>org.codehaus.cargo</groupId>
                        <artifactId>cargo-core-tools-jboss-deployer-5.1-and-onwards</artifactId>
                        <version>1.0.6</version>
                    </dependency>
                <dependency>
                    <groupId>org.jboss.jbossas</groupId>
                    <artifactId>jboss-as-profileservice-client</artifactId>
                    <version>6.0.0.Final</version>
                    <type>pom</type>
                </dependency>

                    <dependency>
                        <groupId>org.jboss.profileservice</groupId>
                        <artifactId>jboss-profileservice-spi</artifactId>
                        <version>0.2.2</version>
                    </dependency>

                    <dependency>
                        <groupId>org.jboss.jbossas</groupId>
                        <artifactId>jboss-as-client</artifactId>
                        <version>6.0.0.Final</version>
                        <type>pom</type>
                    </dependency>
            </dependencies>

        </plugin>

Ответы [ 2 ]

2 голосов
/ 31 января 2011

Как насчет установки свойства <wait> в true?Согласно документам

<wait>  Decides if Cargo should wait after the container is 
            started or not                                   Defaults to true 
1 голос
/ 28 апреля 2011

Hudson контролирует все запущенные процессы и не будет считать сборку выполненной, пока все они не завершатся.Я не знаком с грузом, но вот мои записи из моего опыта с Гудзоном.Чтобы получить процесс через сеть мониторинга, вам может потребоваться:

  • Запустить JBoss в фоновом режиме
  • Установите для переменной среды -Dhudson.util.ProcessTreeKiller.disable значение true в вашем Hudson.конфигурация
  • Установите BUILD_ID = dontKillMe в качестве переменной среды оболочки

Ознакомьтесь с вики Гудзона здесь .Или вики Дженкинса здесь .

Дженкинс и Хадсон - это одно и то же, но две стороны недавнего расщепления.Я позволю вам прочитать подробности из группы Дженкинс и группы Oracle Hudson .Изменить: также SO вопрос Как выбрать между Хадсон и Дженкинс?

...