DevOps
Jenkins
Jenkins це відкритий автоматизаційний сервер для CI/CD із величезною екосистемою плагінів і пайплайнами як код.
Що це
Jenkins виріс із проєкту Hudson, який створив Косуке Каваґуті, і з 2011 року розвивається під іменем Jenkins. Це один із найстаріших і найпоширеніших серверів CI. Він працює на Java, ставиться на власні сервери й керується через веб-інтерфейс.
Пайплайни описують у Jenkinsfile (Groovy-подібна мова, декларативний чи скриптовий синтаксис). Збірки виконують agents (вузли), а функціональність розширюють плагінами: їх понад тисячу, від Git і Docker до Kubernetes і Slack.
Сила Jenkins у гнучкості та повному контролі, слабкість у ручному супроводі: оновлення, плагіни та безпеку треба підтримувати самому.
Коли брати
- Потрібен повний контроль над CI на власній інфраструктурі.
- Є складні, нестандартні пайплайни чи легасі-інтеграції.
- Вже є великий парк Jenkins у компанії.
Коли не варто
- Починаєте новий проєкт на GitHub чи GitLab: вбудований CI простіший.
- Немає часу підтримувати сервер, плагіни та їхні оновлення.
Ключові поняття
- Jenkinsfile
- Опис пайплайна як код, що лежить у репозиторії поруч із проєктом.
- Controller / agent
- Controller керує пайплайнами, agents виконують збірки на окремих вузлах.
- Plugin
- Розширення, що додає інтеграції та можливості в Jenkins.
- Declarative pipeline
- Структурований синтаксис pipeline з stages і steps, простіший за скриптовий Groovy.
Приклад
Питання на співбесіді
1. Що таке Jenkinsfile?
Це файл у репозиторії, що описує пайплайн як код. Він може бути декларативним (структуровані stages) чи скриптовим (Groovy). Так пайплайн версіонується разом із кодом.
2. Навіщо потрібні agents?
Controller лише керує, а збірки виконують agents на окремих машинах чи в контейнерах. Це дозволяє розподілити навантаження й мати різні середовища збірки.
3. Які головні мінуси Jenkins?
Вимагає адміністрування, залежить від плагінів із різною якістю, а оновлення й безпека лежать на вас. Через це нові проєкти часто обирають вбудований CI платформи.
Схожі технології
- GitHub ActionsGitHub Actions це CI/CD, вбудований у GitHub: workflow на YAML запускаються на події репозиторію, як-от push чи pull request.
- GitLab CI/CDGitLab CI/CD це вбудована в GitLab система збірки й доставки, що налаштовується файлом .gitlab-ci.yml.
- DockerDocker пакує застосунок разом із залежностями в контейнер, який однаково запускається на ноутбуці, сервері та в хмарі.
- KubernetesKubernetes це система оркестрації контейнерів: розгортає, масштабує та лікує застосунки на кластері серверів.
Логотипи належать їхнім власникам і використані лише для ідентифікації. Іконки: Simple Icons (CC0), Devicon (MIT).