Интервью-вопрос
Что такое CI/CD
CI/CD это автоматизация проверок, сборки и доставки изменений. Для фронтенда важно объяснить не только термины, но и то, как pipeline защищает UI от регрессий, плохих релизов и ручных ошибок.
- Добавлен
- Редакция
Подготовьте короткий ответ и пару деталей на случай уточняющих вопросов.
Мини-квиз
Проверка перед разбором
Несколько быстрых вопросов перед разбором. Так проще поймать места, которые только кажутся понятными.
Вопрос 1 из 50 правильно
Разбор
Разобраться, а не зазубрить
Дальше разбираем суть, типичные уточнения и места, где легко сказать лишнее или перепутать термины.
Базовая идея
На интервью удобно отвечать в два слоя. Сначала дайте простое определение: CI/CD автоматизирует путь изменения от pull request до окружения, где это изменение можно проверить или показать пользователям. Затем разделите термины.
CI означает Continuous Integration. Это регулярная автоматическая проверка того, что новый код можно безопасно интегрировать в общую кодовую базу. Для фронтенда это обычно установка зависимостей, линтер, typecheck, тесты и production build.
CD означает доставку после успешных проверок. Здесь важно не говорить слишком широко. CD может быть Continuous Delivery, когда артефакт готов к релизу, но production-деплой подтверждается вручную. А может быть Continuous Deployment, когда успешный pipeline сам выкатывает изменения в production.
Как выбрать формулировку на интервью
Хороший короткий ответ может звучать так:
CI/CD это автоматизация проверки и доставки кода. CI запускает проверки на изменения, например lint, typecheck, тесты и сборку. CD доставляет успешную сборку в окружение. В Continuous Delivery релиз обычно ждет ручного подтверждения, а в Continuous Deployment может автоматически уйти в production.
После этого добавьте frontend-практику. Такой pipeline быстрее ловит сломанный UI, ошибки типов, проблемы сборки, неправильные переменные окружения, рост бандла, базовые проблемы доступности и регрессии в важных сценариях. Без CI/CD команда часто узнает о проблеме поздно, когда код уже смержен или выкачен.
Что выбирать в процессе
Запускайте CI: lint, typecheck, test, build, bundle budget и быстрые accessibility checks.Поднимайте preview deployment на каждый PR.Используйте Continuous Delivery с ручным approval.Выбирайте Continuous Deployment только с хорошими тестами, rollback и мониторингом.Что входит в pipeline фронтенда
Базовый pipeline для frontend-приложения не обязан быть сложным. Но он должен проверять реальные риски проекта. Например:
name: CI
on:
pull_request:
push:
branches: [main]
jobs:
checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ci
- run: npm run lint
- run: npm run typecheck
- run: npm test -- --runInBand
- run: npm run build
- run: npm run test:e2e -- --grep @critical
- run: npm run check:bundleЭто не универсальный шаблон, а пример порядка мыслей. npm ci делает установку воспроизводимой по lock-файлу. lint и typecheck ловят ошибки до runtime. Тесты проверяют поведение, а build подтверждает, что production-сборка создается в окружении, похожем на серверное. Отдельная e2e-команда для важных сценариев помогает не выкатить сломанный login или checkout. Проверка bundle budget не дает незаметно ухудшить загрузку.
Плохой подход: оставить в pipeline только npm run build и считать, что этого достаточно. Build может не проверить сценарий оплаты, форму логина, работу с моками API, сломанные labels у формы или некорректный рост бандла. Последствие для UI простое: пользователь видит рабочую страницу, но не может отправить форму с клавиатуры, получает ошибку после клика или ждет лишние секунды из-за тяжелого JS. Безопаснее добавить проверки под важные сценарии, bundle budget и хотя бы базовый accessibility scan.
Delivery, Deployment и риск production
Разницу между Delivery и Deployment стоит проговорить явно, потому что это частая ловушка. В Continuous Delivery результат pipeline готов к выкладке. Например, артефакт собран, тесты прошли, preview или staging обновлен, но production ждет кнопку approve.
В Continuous Deployment успешное изменение может попасть в production без ручного шага. Это удобно для частых релизов, но риск выше. Нужны надежные проверки, feature flags, мониторинг ошибок, метрик Web Vitals, логов, а также понятный rollback.
Для фронтенда это особенно заметно, потому что ошибка в JS-бандле может быстро затронуть всех пользователей. Если приложение раздается через CDN, нужно думать о кешировании, хешированных файлах, порядке публикации assets и совместимости HTML с чанками.
- 1Проверить PR через lint, typecheck, tests, build, bundle budget и базовые accessibility checks
- 2Собрать production-артефакт один раз
- 3Развернуть preview или staging
- 4Выполнить ручное подтверждение или автодеплой по правилам
- 5Проверить мониторинг и иметь rollback
- 1Смержить без обязательных проверок
- 2Собирать проект вручную на машине разработчика
- 3Выкатить без проверки assets, переменных окружения, размера бандла и доступности важных экранов
- 4Не иметь отката и алертов
- 5Узнать о сломанном UI от пользователей
Практический вывод для frontend-разработчика
Вам не обязательно настраивать весь DevOps с нуля, чтобы хорошо ответить на вопрос. Но нужно понимать, как ваш код проходит через pipeline и какие проверки защищают пользователей.
Сильный практический ответ связывает CI/CD с повседневной работой. Pull request не должен мержиться, пока не прошли обязательные checks. Preview deployment помогает увидеть UI до релиза и проверить loading, error и empty state на реальных данных или моках. E2E-тесты стоит запускать хотя бы для важных путей, например login, checkout, создание заказа или отправка формы. После выкладки нужны мониторинг, smoke-тесты и быстрый откат, потому что автоматизация не гарантирует отсутствие багов.
Если вас спрашивают про инструменты, можно назвать GitHub Actions, GitLab CI/CD, Jenkins, CircleCI или похожие системы. Но не делайте ответ списком брендов. Важнее показать, какие этапы вы бы настроили и какой риск каждый этап снижает.
Частые ошибки
Где обычно ошибаются
Проверьте формулировки, которые звучат уверенно, но на интервью быстро выдают пробелы.
- 1
Сводить CI/CD к автодеплою
CI/CD начинается не с деплоя, а с доверия к изменениям. Если вы говорите только про доставку на сервер, вы пропускаете проверки, тесты, сборку и артефакты. Лучше сказать, что деплой имеет смысл после воспроизводимых автоматических проверок. - 2
Путать Delivery и Deployment
Continuous Deliveryготовит релиз и часто требует ручного подтверждения.Continuous Deploymentвыкатывает успешные изменения автоматически. Если смешать эти термины, может показаться, что вы не различаете уровни риска для production-релиза. - 3
Не учитывать frontend-специфику
Для фронтенда важны размер бандла, загрузка чанков, переменные окружения, CDN, доступность важных экранов и совместимость браузеров. Pipeline, который только запускаетnpm run build, может пропустить регрессию в пользовательском сценарии, сломанный фокус в модальном окне или рост JS на сотни килобайт. Добавляйте проверки под реальные риски продукта. - 4
Игнорировать flaky-тесты
Нестабильные тесты быстро приучают команду нажимать rerun вместо поиска причины. Так можно пропустить настоящий баг в асинхронном UI или сетевом сценарии. Лучше временно изолировать тест и починить источник нестабильности. - 5
Хранить секреты в репозитории
Токены для деплоя, API keys и credentials нельзя коммитить в код. В CI их нужно передавать через secrets-хранилище платформы, ограничивать права и не печатать в логах. Иначе утечка из pipeline превращается в инцидент безопасности.
Follow-up
Что могут спросить дальше
Короткие ответы на вопросы, которыми проверяют понимание CI/CD в frontend-проектах.
Живые ответы
Видео с похожим вопросом
Если найдем публичные интервью с таким вопросом, добавим их сюда. Их удобно смотреть после теории, чтобы свериться с живыми ответами.
Пока видео нет. Когда появятся подходящие публичные интервью, добавим их в этот блок, чтобы можно было сравнить разбор с тем, как отвечают реальные кандидаты.
Что такое git rebase 😎
Git rebase переприменяет коммиты ветки на новую базу и делает историю линейной. На странице разбираем, когда это удобно, чем rebase отличается от merge и где есть риск сломать общую историю.
Что такое Docker 😎
Docker упаковывает приложение и его зависимости в контейнеры, чтобы среда запуска была повторяемой. На странице разбираем, что сказать про образы, контейнеры, frontend-сборку, CI/CD и типичные риски.