Важной частью головоломки при разработке веб-приложения является непрерывная доставка. Тестировщики или пользователи могут ранним доступом к альфа-версии внести свой вклад в процесс разработки. Проблемы дизайна, требований, архитектуры или производительности могут быть обнаружены гораздо раньше.
Я собираюсь показать, как настроить этот процесс с использованием Maven и Jenkins. Целевая среда размещается на Tomcat7. Исходный код размещен на GitHub. Поскольку я являюсь разработчиком, который старается избегать опросов в максимально возможной степени, я собираюсь показать, как запустить этот процесс с помощью классной функции GitHub, называемой WebHooks.
1. Создать задание непрерывной доставки
Создать работу Дженкинса и интегрировать ее с Maven очень просто. Быстро охватит это:
- Создайте его с помощью «New Item» -> « »
- Настройте URL GitHub в разделе «Управление исходным кодом» (в моем случае аутентификация не требуется, поскольку мой репозиторий GitHub является открытым)
- Пропустите раздел «Построить триггеры» сейчас, вернемся к этому позже.
- Сконфигурируйте раздел «Сборка», указав путь и цели POM, которые вы используете для создания файла WAR
- Настройте «Настройки сборки» -> «Уведомление по электронной почте»
Сохраните и попробуйте запустить работу Дженкинс. Это очень распространенная и базовая конфигурация работы Дженкинса. Теперь мы собираемся настроить развертывание файла WAR в Tomcat7. Но тут возникает дилемма. Есть два очень зрелых способа развертывания. Я покрою оба и позволю читателю выбрать один.
а) Непрерывная доставка с использованием tomcat7-maven-plugin
- Прежде всего нам нужно разрешить доступ в Tomcat7. Отредактируйте $ CATALINA_HOME / conf / tomcat-users.xml (CATALINA_HOME — домашний каталог Tomcat) и настройте роль и пользователя следующим образом.
1
2
|
< role rolename = "manager-script" /> < user username = "deployer" password = "===PASSWORD===" roles = "manager-script" /> |
- Настройте учетные данные Tomcat7 для Maven в файле конфигурации settings.xml . Этот файл обычно находится в <user_home> /. M2 .
1
2
3
4
5
|
< server > < id >tomcat-server-alpha</ id > < username >deployer</ username > < password >===PASSWORD===</ password > </ server > |
- Установите tomcat7-maven-plugin в pom.xml
01
02
03
04
05
06
07
08
09
10
|
< plugin > < groupId >org.apache.tomcat.maven</ groupId > < artifactId >tomcat7-maven-plugin</ artifactId > < version >2.2</ version > < configuration > < server >tomcat-server-alpha</ server > < path >/[TOMCAT-DEPLOY-PATH]</ path > </ configuration > </ plugin > |
- Наконец добавьте дополнительную цель Maven «tomcat7: redeploy» в работу Дженкинс
б) Непрерывная доставка с использованием плагина Jenkins Deploy
- Установите плагин Jenkins Deploy
- В задании Jenkins, в котором создается WAR, настройте «Добавить действие после сборки» -> «Развернуть ear / war в контейнер»
2. Дженкинс — интеграция с GitHub
- Требование блокирования здесь — чтобы сервер Jenkins был доступен из Интернета. Если вы не можете по какой-либо причине, вы должны придерживаться опроса управления исходным кодом в Jenkins.
- Установите плагин GitHub в Jenkins
- Создать личный токен доступа в GitHub для Jenkins. Это можно найти в разделе «Редактировать свой профиль» -> «Приложения»
- Настройте плагин GitHub для использования сгенерированного токена в Jenkins. Вы можете найти этот раздел в «Управление Jenkins» -> «Настройка системы» -> «GitHub Web Hook» . Обратите внимание, что вам не нужно использовать пароль. URL API — это «https://api.github.com»
- Создать WebHook в Github. Открыть репозиторий -> «Настройки» -> «Webhooks & Services» -> «Создать Webhook»
- Используйте URL Jenkins с суффиксом «/ github-webhook» . Jenkins будет заменяться автоматически при настройке заданий, поэтому нет необходимости создавать ловушку GitHub для каждого задания Jenkins.
- После создания вы можете протестировать webhook через три точки в « Недавних поставках » . HTML-код ошибки «302 найдено» означает, что он работает нормально (даже когда GitHub выделяет его восклицательным знаком).
- Наконец, включите запуск GitHub в задании Jenkins
Вот и все. Коммит Github должен вызвать развертывание в Tomcat сейчас.
Ресурсы
Ссылка: | Инициируйте непрерывную доставку каждого коммита GitHub от нашего партнера JCG Любоса Крнака в |