Релиз и откат платформы
Предлагаемый релиз считается успешным, когда новый код работает с данными, а существующие публикации остаются доступными.
Откат кода, откат сайта и восстановление базы — разные операции.
Процесс ниже нужно внедрить и отработать на staging. Сейчас подтверждён только автодеплой документации.
До выпуска
Зафиксировать commit и собранный артефакт. Установить зависимости с frozen lockfile, выполнить существующие lint/build затронутых пакетов; для API использовать bun run test — это Jest. Проверки новой генерации должны включать повтор задания, сбой исполнителя, сохранность предыдущей публикации и запрет доступа к чужому проекту.
Проверить изменения схемы и срок доступности резервной копии. Миграции должны быть совместимы с версией, на которую планируется откат. Предлагаемый порядок — сначала добавлять совместимую структуру, переносить данные, затем удалять устаревшую в отдельном релизе.
Выпуск
- На staging применить миграции и запустить именно собранную версию.
- Пройти создание сайта, правку, публикацию и повторный вход.
- Убедиться, что откат на предыдущую версию кода допустим для текущей схемы.
- В production выполнить миграцию контролируемым этапом, затем обновить процессы.
- Проверить базу, хранилище, исполнителя, тестовую публикацию и HTTPS.
В существующем контейнере миграции выполняются при старте. Перед несколькими репликами этот порядок нужно пересмотреть: выпуск миграций не должен зависеть от случайной очередности перезапусков.
Если что-то пошло не так
| Сбой | Действие |
|---|---|
| Не собирается образ | Не заменять работающую версию; исправить сборку |
| Не применяется миграция | Не продолжать релиз; установить фактическое состояние схемы |
| Новый API нарушает работу | Вернуть проверенный артефакт, если схема совместима |
| Сломана конкретная посадочная | Переключить её публикацию на предыдущую версию |
| Потеряны данные или файлы | Выполнить отдельное восстановление, не выдавать redeploy за recovery |
Удаление столбцов и преобразование данных могут сделать обычный rollback невозможным. План восстановления должен существовать до такого изменения.
Критерий завершения
Автор открывает сохранённый проект, вносит правку и публикует её. Посетитель по прежней ссылке видит целостную страницу. Тест повторной обработки не создаёт дубликат проекта. Результат релиза записан вместе с commit, миграциями и обнаруженными ограничениями.