Автосборка и автообновление — не модная практика, а способ не развозить руками одни и те же изменения. Минимальный набор, который работает.
Сборка и проверка кода
npm ci + tsc --noEmit + eslint. Отсекает 80% ошибок до проверки. Не проходит сборка — запрос на слияние не принимается. Длительность — 1,5–2 минуты.
Тесты
Модульные (Vitest / Jest), интеграционные (Playwright), API (Supertest). Покрытие: 60% по бизнес-логике, 100% по расчётам и валидации.
Сборка артефакта
Docker-образ, тег = git SHA. Публикация в Container Registry. Отдельно — статика для CDN. Артефакты неизменяемы: один тег — одна сборка.
Обновление
Три среды: тестовая (каждое слияние в основную ветку), предпродуктивная (по тегу), продуктивная (по тегу с подтверждением). Сине-зелёное для API, постепенное для сервисов без сохранения состояния. Откат за 60 секунд.
Миграции базы данных
Prisma Migrate / Knex / Flyway. Запуск перед обновлением, защищены от повторного запуска, обратимы. Правило: никаких удаляющих операций в первой миграции. Сначала добавляется поле, разворачивается код, потом удаляется старое.
Мониторинг после обновления
10 минут наблюдения: Sentry, Prometheus, синтетические проверки через Playwright. Падение — автооткат. Обновление в пятницу вечером или понедельник утром запрещено.
Метрики здоровой автосборки
Длительность не больше 10 минут. Частота обновлений ≥ 3 в неделю. Частота откатов ≤ 5%. Среднее время восстановления ≤ 1 час. Сборка дольше 15 минут — разделяется на параллельные задачи.
Чек-лист
- Сборка + проверка кода + типы в каждом запросе на слияние.
- Модульные тесты на бизнес-логику.
- Сквозные тесты на ключевые сценарии.
- Docker-образы с неизменяемыми тегами.
- Три среды: тестовая / предпродуктивная / продуктивная.
- Автоматические миграции базы данных.
- Сине-зелёное или постепенное обновление.
- Sentry + Prometheus + синтетика.
- Автооткат при падении метрик.
- Запрет обновления в пятницу вечером и понедельник утром.
Выводы
Хорошая автосборка — незаметная автосборка. Команда сливает изменения, через 10 минут они в продуктивной среде. Настройка — 2–3 дня, окупается за первый месяц.