Для чего используется Jenkins
Что проверяют
Работали ли вы с Jenkins руками или знаете его по названию. Следом обычно спрашивают, как устроен ваш пайплайн, где выполняются сборки и почему Jenkins, а не GitLab CI или GitHub Actions.
Как отвечать
Jenkins это сервер автоматизации с открытым кодом, который вы разворачиваете сами. Чаще всего на нём строят CI/CD, но по сути он запускает любые задачи по триггеру: коммит, вебхук, расписание, ручной запуск с параметрами. Устройство:
- controller и агенты: контроллер хранит конфигурацию, очередь и историю, а сборки идут на агентах (по SSH, inbound-агенты, поды в Kubernetes через Kubernetes plugin). Число исполнителей на самом контроллере ставят в 0;
- Pipeline as Code:
Jenkinsfileв репозитории, декларативный синтаксисpipeline { ... }для большинства случаев и скриптовый на Groovy для сложной логики; - Multibranch Pipeline: свой пайплайн для каждой ветки и pull request, создаётся автоматически;
- Shared Libraries: общие шаги для десятков репозиториев вместо копипасты;
- Credentials: секреты хранятся в Jenkins, подставляются через
withCredentialsи маскируются в логах; - Configuration as Code (JCasC): настройка контроллера YAML-файлом, чтобы его можно было пересоздать, а не чинить руками.
Типичный конвейер: checkout, сборка, юнит-тесты, статический анализ, Docker-образ, пуш в registry, деплой на стенд, подтверждение через input перед продом.
Назовите и минусы: зоопарк плагинов с проблемами совместимости, частые обновления безопасности, контроллер как единая точка отказа. Поэтому новые проекты часто берут встроенный CI своей Git-платформы, а Jenkins остаётся там, где много нестандартных сценариев и своя инфраструктура.
Где спотыкаются
Отвечают «Jenkins собирает код» и не могут описать ни одного своего Jenkinsfile. Нужен конкретный пример: сколько стадий, сколько минут идёт сборка, на каких агентах.
Запускают сборки на контроллере. Это и лишняя нагрузка, и дыра: код сборки получает доступ к файлам контроллера и ко всем секретам.
Настраивают задачи кликами в интерфейсе, без Jenkinsfile и JCasC. Такой Jenkins невозможно воспроизвести, и после потери диска его собирают заново по памяти.