Подготовил выпуск
с проверкой новой версии.
Задача — проверить новое приложение до переключения пользователей и сохранить прежнюю версию как цель возврата. Для этого на Debian предусмотрены два окружения: blue и green.
Маршрутизатор выбирает активное окружение, а сценарий выпуска готовит второе. Это снижает зависимость переключения от ручных действий, но требует совместимости обеих версий с общей базой PostgreSQL.
Новый выпуск проверяется отдельно.
Сценарий блокирует параллельный запуск, проверяет коммит и Git-состояние, создаёт каталог выпуска и собирает образы клиентской и серверной частей. Затем запускает противоположный цвет.
Трафик переключается после проверки сервисов.
Проверяется состояние серверной части, затем клиентской части. После изменения конфигурации маршрутизатора выполняется nginx -t. Успешная проверка позволяет перезагрузить Nginx и обновить active-color.
Контрольные запросы выполняются уже после переключения. Ошибка предварительной проверки оставляет текущую версию активной; проблема после переключения требует возврата прежней конфигурации.
Старое окружение сохраняет предыдущий выпуск.
Для возврата восстанавливаются конфигурация маршрутизатора и прежний active-color. Предыдущая версия уже существует в Docker, поэтому её не требуется собирать заново.
База общая для обоих окружений.
Blue и green обращаются к одной PostgreSQL. Переключение цвета меняет версию приложения, но не восстанавливает прежнее состояние данных. Изменения схемы должны сохранять совместимость с версией, на которую возможен возврат.