Опишите процесс выпуска релиза на предыдущем проекте.

«Опишите процесс выпуска релиза на предыдущем проекте.» — вопрос из категории CI/CD и DevOps, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Процесс релиза был автоматизирован через CI/CD и следовал модели GitFlow с контролируемым деплоем.

Этапы релизного цикла:

  1. *Подготовка (`release/` ветка):**

    • Создание релизной ветки от develop.
    • Фиксация версии (semantic versioning).
    • Прогон полного набора автотестов (регресс).
  2. Стабилизация и тестирование:

    • Деплой на staging-окружение, максимально близкое к production.
    • Ручное тестирование критичных пользовательских сценариев и smoke-тесты.
    • Performance и security-тесты (если требуются).
  3. Контролируемый деплой в production:

    • Canary-релиз: Выкатка новой версии на небольшой процент трафика (например, 5%) с мониторингом метрик (ошибки, latency).
    • Постепенный rollout: При успехе canary — увеличение процента трафика до 100%.
    • Использование feature flags для включения/отключения функциональности без повторного деплоя.
  4. Откат (Rollback): Стратегия blue-green деплоя или быстрый откат к предыдущему Docker-образу в случае критичных инцидентов.

Пример CI/CD конфигурации (GitLab CI):

stages:
  - test
  - deploy-staging
  - approval
  - deploy-prod

deploy-prod:
  stage: deploy-prod
  script:
    - kubectl set image deployment/my-app app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
  only:
    - master
  when: manual # Требуется ручное подтверждение

Пострелизные активности: Мониторинг через Grafana/Datadog, сбор обратной связи, проведение короткого пост-мортема для извлечения уроков.