Общая задача

Необходимо реализовать систему автоматического деплоя и тестирования для серверной части (бэкенд) и нескольких клиентских приложений (фронтенды). Проект включает:

  • Один небольшой бэкенд-сервис
  • Несколько простых фронтендов

Требования к автоматизации

1. Этап до деплоя

  • Автоматический запуск тестов перед выкаткой (юнит-тесты, интеграционные, возможно smoke-тесты)
  • Блокировка деплоя при падении критических тестов

2. Этап деплоя

  • Автоматическое развертывание на выбранной среде (staging/production)
  • Плавная выкатка (без простоев или с минимальным окном)
  • Автоматический откат (rollback) при неудаче

3. После деплоя

  • Запуск post-deploy тестов (проверка доступности, функциональности основных сценариев)
  • Мониторинг рабочей системы (нагрузка, ответы, ошибки)

4. Бэкапы и управление

  • Автоматическое создание бэкапов базы данных и ключевых конфигов перед деплоем
  • Восстановление из бэкапа при необходимости

Ожидаемый результат

Готовая система CI/CD с документацией по использованию и развертыванию. Исполнитель должен предоставить примеры конфигурационных файлов (YAML, скрипты) для GitLab с описанием пайплайнов.