Статьи

Запуск непрерывной доставки каждый коммит GitHub

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

Я собираюсь показать, как настроить этот процесс с использованием 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>
        <url>http://[JENKINS-URL]/manager/text</url>
        <server>tomcat-server-alpha</server>
        <path>/[TOMCAT-DEPLOY-PATH]</path>
    </configuration>
</plugin>
  • Наконец добавьте дополнительную цель Maven «tomcat7: redeploy» в работу Дженкинс

б) Непрерывная доставка с использованием плагина Jenkins Deploy

  • Установите плагин Jenkins Deploy
  • В задании Jenkins, в котором создается WAR, настройте «Добавить действие после сборки» -> «Развернуть ear / war в контейнер»

Jenkins-кот-развернуть

2. Дженкинс — интеграция с GitHub

  • Требование блокирования здесь — чтобы сервер Jenkins был доступен из Интернета. Если вы не можете по какой-либо причине, вы должны придерживаться опроса управления исходным кодом в Jenkins.
  • Установите плагин GitHub в Jenkins
  • Создать личный токен доступа в GitHub для Jenkins. Это можно найти в разделе «Редактировать свой профиль» -> «Приложения»

GitHub генерировать новый маркер-

  • Настройте плагин GitHub для использования сгенерированного токена в Jenkins. Вы можете найти этот раздел в «Управление Jenkins» -> «Настройка системы» -> «GitHub Web Hook» . Обратите внимание, что вам не нужно использовать пароль. URL API — это «https://api.github.com»

Дженкинс-GitHub-веб-крючок

  • Создать WebHook в Github. Открыть репозиторий -> «Настройки» -> «Webhooks & Services» -> «Создать Webhook»
  • Используйте URL Jenkins с суффиксом «/ github-webhook» . Jenkins будет заменяться автоматически при настройке заданий, поэтому нет необходимости создавать ловушку GitHub для каждого задания Jenkins.
  • После создания вы можете протестировать webhook через три точки в « Недавних поставках » . HTML-код ошибки «302 найдено» означает, что он работает нормально (даже когда GitHub выделяет его восклицательным знаком).

GitHub-webhook-создание

  • Наконец, включите запуск GitHub в задании Jenkins

Дженкинс-Job-спусковые

Вот и все. Коммит Github должен вызвать развертывание в Tomcat сейчас.

Ресурсы

  1. Документация по плагину Jenkins GitHub
  2. Документация по плагину Codehous Tomcat Maven