Из каких этапов состоит CI/CD-пайплайн и чем continuous delivery отличается от continuous deployment?
- Как вы бы построили пайплайн для сервиса?
- Что такое продвижение артефакта между окружениями?
CI — каждое изменение автоматически собирается и проверяется: сборка, линтеры, юнит-тесты, сканирование, сборка артефакта (образа). CD: continuous delivery — артефакт всегда готов к выкатке, на прод — по кнопке; continuous deployment — каждое прошедшее проверки изменение уходит в прод автоматически. Ключевой принцип: собрать один раз, затем продвигать тот же артефакт через окружения.
- Быстрая обратная связь: дешёвые проверки первыми, пайплайн до 10–15 минут
- Версия артефакта — из коммита (git sha, semver), не latest
- Миграции БД, смоук-тесты после выкатки, автоматический откат
А ещё Красный main — приоритет команды: пока он сломан, никто не выкатывает
Подробно
Типичный пайплайн:
push → сборка и линтеры → юнит-тесты → сборка образа (тег = sha)
→ сканирование уязвимостей → публикация в реестр
→ деплой на staging → интеграционные и e2e-тесты
→ (ручное подтверждение) → деплой на prod → смоук-тесты
Принципы:
- пайплайн как код в репозитории (GitHub Actions, GitLab CI, Jenkinsfile);
- кэш зависимостей и слоёв для скорости;
- параллельные задачи;
- нестабильные тесты чинят или убирают — иначе их перестают замечать;
- секреты из хранилища CI, права деплоя — только у пайплайна.
Неизменяемый артефакт. Пересборка для каждого окружения даёт другие версии зависимостей: на staging проверено одно, на прод уехало другое. Окружения различаются только конфигурацией.
Метрики DORA: частота деплоя, время от коммита до прода, доля неудачных изменений, время восстановления.
Что хотят услышать
- Этапы пайплайна и их порядок.
- Delivery против deployment.
- Один артефакт для всех окружений.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Continuous delivery выкатывает каждое изменение в прод автоматически, а deployment — по кнопке
- ✗Образ пересобирают отдельно для каждого окружения, чтобы учесть его настройки
- ✗CI запускают раз в неделю перед релизом
- ✓CI — сборка и тесты на каждое изменение; delivery — выкатка по кнопке, deployment — автоматически
Разбор темы
- Pull request, код-ревью и стратегии ветвления
Как оформить pull request, который быстро проверят, как ревьюить по существу, чем trunk-based отличается от GitFlow и что делает CI/CD.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.