Создание веб-приложений для войны "Maven Way"
Мое веб-приложение состоит в основном из двух артефактов: java-server.jar и js-client.war. Оба агрегируются / накладываются и получают дополнительные файлы свойств для целевой среды. Наконец, я получил военный файл.
Некоторые военные файлы развертываются с помощью tomcat: некоторые развертываются с помощью скрипта, но это не должно иметь значения на данном этапе.
Есть несколько вещей, которые мне не нравятся в моем подходе:
- Сервер и клиент освобождаются с помощью плагина maven-release-plugin, а конечное веб-приложение - нет.
- Просто имея окончательный файл войны, я не могу определить, для какого сервера он был построен.
- Обычно мне требуется несколько комбинаций клиент / сервер: пока я собираю бета-сервер со стабильными версиями, сервер ночной сборки должен работать с последними снимками.
Как вы поддерживаете, выпускаете и внедряете (в репозиторий Maven) стабильные / бета-версии веб-приложений? Как вы поддерживаете конкретные настройки конфигурации целевого сервера? Как вы храните разные версии? У тебя много филиалов?
Спасибо Ян
3 ответа
То, что я делаю, использует дополнительные шаги сборки Jenven maven для выполнения
tomcat:deploy
после каждой сборки. С правильным профилем maven, который указывает сборки на наш сервер разработки. Затем, когда мы хотим перейти к подготовке, мы используем плагин релиза maven (снова с Дженкинсом), чтобы создать релиз с номером версии, который не является снимком. Скажем, мы выпустим 2.0beta3 для постановки. Это сделано с чем-то вроде:
tomcat:deploy -P staging-deploy
Затем профиль гарантирует, что мы отправим на промежуточный сервер вместо сервера dev запись pom, например:
<profile>
<id>deploy-staging</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<server>tomcat-staging</server>
<url>http://tomcat-staging.internal:${tomcat-staging.port}/manager/text</url>
<path>${tomcat.path}</path>
</configuration>
</plugin>
</plugins>
</build>
</profile>
Наконец, переход от постановки к жизни осуществляется полностью за пределами Maven и Jenkins. Я просто не доверяю Maven, чтобы не сломаться:-)
Я могу рекомендовать использовать сервер сборки, такой как Hudson. Имеет поддержку maven и rcs. Вы можете указать, например, какую ветку вашего исходного кода построить и какие цели maven выполнить.
Мы также используем Hudson для развертывания сборок на наших веб-серверах.
Моя ситуация не так сложна, как ваша, поэтому я могу ответить только на этот вопрос:
Как вы поддерживаете конкретные настройки конфигурации целевого сервера?
Я пытаюсь вывести всю конфигурацию наружу, чтобы развернуть точно такой же файл WAR в stage / prod. Для этого я использую Spring контекст: свойство-заполнитель тега. В WAR есть файлы свойств по умолчанию, которые переопределяются свойствами в /etc/app/*.properties (c:/etc/app/*. Properties в Windows).
Что касается фактического развертывания, я в настоящее время загружаю файл WAR вручную, но планирую автоматизировать это в ближайшем будущем.