Выпуск обновления Yabeard через staging на VPS
Собрали обновление отдельно от рабочей версии, проверили восемь новых маршрутов через локальный предпросмотр и заменили сборку с сохранением предыдущих файлов.
Внутренний выпуск сайта Yabeard на VPS 20 сентября 2026 года. Описание основано на зафиксированных этапах сборки, HTTP-проверки и замены версии в той сессии.
Релиз сайта · внутренняя практика
Сборка
Отдельный каталог релиза
Проверка
Страницы и файлы сайта
Откат
Предыдущая версия сохранена
Задача
Обновление собственного сайта включало новые публичные материалы и маршруты. Требовалось проверить собранную версию на VPS до замены работающего приложения, а также сохранить предыдущие исходники и сборку на случай возврата. Задача состояла в управляемом выпуске конкретного обновления: подготовить кандидата, проверить его HTTP-ответы и только затем перенести публичные изменения в рабочую версию.
Ограничения
- Предпросмотр слушал только loopback. Использовались существующие симлинки зависимостей и окружения, поэтому staging не был полностью независимой копией инфраструктуры.
- PM2 выполнял reload процесса в режиме fork; нулевой простой не гарантировался. HTTP-smoke охватывал маршруты, а не автоматическую проверку БД; откат общей схемы данных требовал бы отдельного плана.
Решение
Сборку next build выполнили в staging-каталоге внутри области резервных копий выпуска. Симлинки node_modules и окружения уже существовали и использовались при подготовке кандидата. Затем запустили локальный предпросмотр и провели HTTP-smoke восьми новых маршрутов. Этот этап позволил проверить доступность страниц именно в собранном приложении перед переносом. После тестов скопировали публичные исходники и заменили рабочую сборку. Предыдущий build и исходники сохранили отдельно; статические assets старой версии также оставили доступными, чтобы уже открытые страницы могли запросить связанные с ними файлы. Завершили переключение командой pm2 reload для процесса в режиме fork. Подготовка, проверка кандидата и замена версии были последовательными этапами одного выпуска, с сохранёнными материалами предыдущего состояния для возможного возврата.
Результаты
| Метрика | До | После | Изменение |
|---|---|---|---|
| Подготовка кандидата | Исходники обновления | next build выполнен в staging | Этап выпуска завершён |
| Проверка маршрутов | Локальный предпросмотр сборки | HTTP-smoke восьми новых маршрутов | Проверено перед переносом |
| Предыдущая версия | Рабочий build, исходники и assets | Сохранены при замене сборки | Материалы для возврата |
| Переключение приложения | Подготовленная и проверенная сборка | Публичные исходники перенесены, PM2 reload выполнен | Процесс в режиме fork |
Технологии
Артефакты
- Собранный кандидат обновления в staging с использованием существующих ссылок на зависимости и окружение приложения.
- Локальный предпросмотр и выполненная HTTP-проверка восьми новых маршрутов перед копированием публичных исходников и заменой сборки.
- Сохранённые исходники и build предыдущей версии, оставленные статические файлы и переключённый через PM2 процесс приложения.
Разборы по теме
Релиз Next.js: проверка готовности, переключение и откат
Как подготовить и проверить отдельную сборку Next.js, переключить трафик и сохранить возможность отката с учётом PM2, данных и совместимости миграций.
Резервная копия сайта: как проверить, что восстановление действительно работает
Состав бэкапа, согласованность базы и файлов, отдельное хранилище и учебное восстановление с проверкой входа, контента и заявок.