Настроил выпуск
с возвратом версии.

Разделил приложение на окружения blue и green. Новая сборка запускается рядом с текущей; проверки предшествуют переключению маршрутизатора.

По технической карте green активен; blue сохранён для возврата.

Подготовил выпуск
с проверкой новой версии.

Задача — проверить новое приложение до переключения пользователей и сохранить прежнюю версию как цель возврата. Для этого на Debian предусмотрены два окружения: blue и green.

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

Новый выпуск проверяется отдельно.

Сценарий блокирует параллельный запуск, проверяет коммит и Git-состояние, создаёт каталог выпуска и собирает образы клиентской и серверной частей. Затем запускает противоположный цвет.

Трафик переключается после проверки сервисов.

Проверяется состояние серверной части, затем клиентской части. После изменения конфигурации маршрутизатора выполняется nginx -t. Успешная проверка позволяет перезагрузить Nginx и обновить active-color.

Контрольные запросы выполняются уже после переключения. Ошибка предварительной проверки оставляет текущую версию активной; проблема после переключения требует возврата прежней конфигурации.

Старое окружение сохраняет предыдущий выпуск.

Для возврата восстанавливаются конфигурация маршрутизатора и прежний active-color. Предыдущая версия уже существует в Docker, поэтому её не требуется собирать заново.

База общая для обоих окружений.

Blue и green обращаются к одной PostgreSQL. Переключение цвета меняет версию приложения, но не восстанавливает прежнее состояние данных. Изменения схемы должны сохранять совместимость с версией, на которую возможен возврат.

Два окружения на одном Debian не обеспечивают устойчивость к отказу самого сервера. Здесь решается задача управляемого выпуска приложения.