Continuous Deployment для локального проекта

Я разрабатываю учебное вэб-приложение на Java, использоваться оно будет локально.

Среда разработки:

  • Windows
  • Eclipse
  • Git
  • В качестве сервлет контейнера предполагаю использовать Apache Tomcat

Хочу автоматизировать деплой (локальный) - т.е. чтобы при коммите мое вэб-приложение автоматически собиралось и помещалось в Tomcat (установленный локально, соответственно). Подскажите, плиз, как это делается и с помощью какого ПО?


Ответы (1 шт):

Автор решения: Roman Konoval

Сначала я опишу принципиальную схему, а конкретные инструменты опишу после.

Схема такая:

  1. после комита нужно собрать приложение (создать *.war файл)
  2. созданный файл развернуть на tomcat

Сборка по комиту

Тут есть два варианта.

Либо использовать post-commit хук, чтоб сам гит извещал о комите.

Либо какой-то процесс должен периодически проверять изменения и запускать сборку.

Развертывание (deploy) на томкат

У томката есть несколько возможностей развертывать приложения:

  1. Есть просто копирование war-файла в папку с веб-приложениями
  2. Есть специальное приложение Tomcat Manager с web API для развертывания
  3. Есть библиотека, которая интегрируется с ant и позволяет среди прочего разворачивать приложение.

Инструменты

Наверное, самый простой способ это написать самому скрипт который будет состоять из двух шагов:

  1. собирать приложение в war-файл (mvn package если используется maven c соответствующим плагином)
  2. копировать war-файл в папку з web приложениями tomcat

Далее нужно:

  1. добавить post-commit хук, чтобы скрипт запускался при комите. Тут эта тема затронута для windows в более широком контексте.
  2. настроить автоматическое развертывание, чтобы после шага 2 скрипта приложение подхватывалось томкатом

Нужно понимать, что continuous deployment это довольно непростая процедура, так как обычно она включает среди прочего:

  1. запуск тестов во время сборки (и отчеты если что-то не так)
  2. интеграционное тестирование (+отчеты)
  3. сама процедура развертывания приложения может потребовать мигрировать данные в БД.
  4. smoke тестирование после развертывания
  5. возможность отката на предыдущую версию, если что-то пошло не так.

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

Более сложный в настройке вариант, но и дающий больше возможностей, это использование системы типа jenkins. В этом случае есть готовые плагины, которые могут помочь решить некоторые из описанных задач.

Цена за это удобство сложность конфигурирования и необходимость администрирования. В этом случае может быть удобно запускать jenkins в docker для удобства развертывания самого jenkins.

→ Ссылка