Выполнение патча / дельта-релизов для веб-приложения

Во-первых, моя (упрощенная) проблема в двух словах:

Мой цикл выпуска на работе заключается в том, что каждый выпуск в настоящее время мы выполняем полное копирование / развертывание веб-приложения. Проще говоря, мы генерируем tarball, отправляем SCP на рабочий сервер и устанавливаем его. Просто как тот. Технологический стек - LAMP, поэтому в настоящее время нет этапов компиляции кода.

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

То, что я хочу сделать, это выполнить выпуски дельта / патча для этого веб-приложения LAMP, которое не требует полного развертывания tarball.

Я использую SVN для своей VCS, и я не хочу, чтобы мои развернутые приложения были рабочими копиями SVN. Я экспериментировал с использованием patch (linux CLI tool) и файлов исправлений, но в этом есть дыры. Например, исправление одного и того же файла более одного раза приводит к накладным расходам dev/ops для отслеживания того, какие файлы были исправлены, из каких версий и в какие версии на производственном сайте (что быстро усложняется при выполнении нескольких последовательных исправлений),

В конечном счете, мне нужен надежный метод для выпуска дельта / патча для веб-приложения LAMP, для которого не требуется рабочая копия SVN на рабочем веб-сервере.

Как другие решают эту проблему? Вы просто используете rsync с опцией удаления и избегаете файлов патчей?

2 ответа

Решение

Я бы использовал rsync для развертывания с svn export ГОЛОВКИ хранилища для обновления ваших серверов приложений. Rsync испытан в бою, проверен и готов к работе без каких-либо работ с вашей стороны. В зависимости от того, сколько серверов вам нужно развернуть, вы можете взглянуть на mrsync, если размеры файлов стали очень большими, и вы хотите быстро развернуть на большое количество компьютеров с помощью многоадресной рассылки (возможно, излишним для ваших нужд, если у вас не много серверов или много данных в данной дельте, но, конечно, вариант).

Я не хочу, чтобы мои развернутые приложения были рабочими копиями SVN

Но можете ли вы согласиться просто использовать SVN на производстве и иметь WC вне webroot? В этом случае вы можете обновить WC по требованию (меньше трафика) и экспортировать WC в веб-пространство.

Другие вопросы по тегам