Snowindy
@Snowindy

Автоматизированная установка релиза на Prod?

Есть стартап-веб-проект, работающий в режиме закрытого альфа-тестирования на боевом сервере (FreeBSD).


Релизы идут с периодом примерно в неделю.


Каким инструментом лучше автоматизировать установку релиза?


Она включает:

— Остановка Tomcat

— Получение исходников с GitHub

— Сборка *.war-файла для установки

— Бэкап БД

— Накат миграций в БД

— Удаление архива приложения на сервере

— Копирование *.war приложения в /webapps

— Очистка временных директорий Tomcat

— Старт Tomcat
  • Вопрос задан
  • 2926 просмотров
Решения вопроса 1
@1nd1go
У нас это выглядит примерно так.
1. Собрали все мавеном
2. Положили в nexus (там соответственно разные версии артефактов)
3. Деплой скрипт делает следующее
— выкачивает war на прод
— прибивает tomcat
— распаковывает
— запускает

Откатывать также — просто скрипту передается предыдущая версия. Логи у в вас все в приложении, а также мавеновые.

Апдейт Базы Данных — выполняется через maven flyway плагин или, если попроще — sql plugin и скармливается sql файл.

Рассматривали другие «супер» тулы, типа capistrano, puppet и ваще. Но все сводится к тому, что все что они делают можно перенести в мавен, а тот минимальный функционал что нельзя (это остановка томката и выкачиваение артефакта) и шелл скрипт нормально работает.

Шелл скрипт можно запускать из всяких TeamCity, Bamboo или Hudson'Ов в рамках многоступенчатых планов.

Проблему, которую я так и не могу решить — это управление изменениями конфигов Tomcata и Apache: как их менять удобно так, чтобы они трэкались в svn'е, они частично тестировались на одном сервере, и по релизу выкатывать их на все сервера.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
gricom
@gricom
Со сборкой проекта отлично справляется Maven (либо Ant, в зависимости от личных предпочтений), остальное — дело деплой-скриптов, писать их можно на чем угодно (bash, python, можно даже Ant). Я что-то слышал про такой инструмент для деплоя как Chef, но ничего про него сказать не могу, не использовал.
Ответ написан
piromanlynx
@piromanlynx
Системный администратор в Perfect Solutions
Если интересует депой на удаленный сервер по ssh то capistrano. Он предназначен для Ruby-on-Rails проэктом, но им делоят и php-проэкты. Думаю с java проблем не будет.
Ответ написан
Комментировать
@dkurilenko
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы