Jenkins
Jenkins — свободный сервер автоматизации, предназначенный для упрощения процессов сборки, тестирования и развёртывания приложений, реализующих практики непрерывной интеграции (CI) и непрерывной доставки/развёртывания (CD)[17][18][19].
Общие сведения
| Jenkins | |||
|---|---|---|---|
| Тип | Сервер автоматизации (CI/CD) | ||
| Автор | Косукэ Кавагути[1] | ||
| Разработчик | Сообщество[2] под эгидой Continuous Delivery Foundation[3] | ||
| Написана на | Java[4] | ||
| Интерфейс | Веб-интерфейс[5] | ||
| Операционная система | Кроссплатформенное | ||
| Языки интерфейса | Русский, английский, немецкий, французский, испанский, японский, китайский и другие[6] | ||
| Первый выпуск | 2 февраля 2011[7] | ||
| Аппаратные платформы | x86-64, ARM[8] | ||
| Последняя версия | 2.516.2 (LTS) (20 августа 2025[9]) | ||
| Кандидат в релизы | 2.516.3 (LTS) (17 сентября 2025[10]) | ||
| Бета-версия | 2.527 (Weekly) (9 сентября 2025[11]) | ||
| Репозиторий | github.com/jenkinsci/jen… | ||
| |||
| |||
| Состояние | Активное[16] | ||
| Лицензия | Бесплатное программное обеспечение с открытым исходным кодом | ||
| Сайт | jenkins.io | ||
История
Проект был создан в 2004 году под названием Hudson[20]. Его автором является японский программист Косукэ Кавагути, который в то время работал в компании Sun Microsystems. Кавагути разработал сервер автоматизации, чтобы тестировать свой код перед его отправкой в общий репозиторий и, таким образом, избегать ошибок в сборке проекта.
В 2011 году, после поглощения Sun Microsystems корпорацией Oracle, в сообществе разработчиков возник конфликт по поводу использования торговой марки «Hudson». В результате 29 января 2011 года было проведено голосование, по итогам которого было принято решение переименовать проект в Jenkins. Первая версия под новым названием, Jenkins 1.396, была выпущена 2 февраля 2011 года.
Функции
Jenkins предоставляет гибкий и расширяемый набор инструментов, позволяющий полностью автоматизировать жизненный цикл разработки программного обеспечения. Основные возможности включают:
- Поддержку полного цикла CI/CD (непрерывной интеграции и непрерывной доставки) — автоматизацию сборки, тестирования и развёртывания, что ускоряет выпуск изменений и снижает количество ручных операций[17][19].
- Экосистему из более чем 2000 плагинов, обеспечивающих интеграцию с Git, Docker, Kubernetes, Maven, Gradle и другими популярными технологиями[18].
- «Конвейер как код» (Pipeline as Code) — описание стадий сборки и доставки в файле Jenkinsfile на базе Groovy, хранящемся в системе контроля версий[21].
- Конфигурация как код (Configuration as Code, JCasC): возможность описывать и управлять конфигурацией Jenkins с помощью YAML-файлов, которые хранятся в системе контроля версий.
- Распределённые сборки, позволяющие распределять задачи между множеством агент-узлов и тем самым ускорять обработку крупных проектов[17].
- Гибкий пользовательский интерфейс: Jenkins предоставляет два основных веб-интерфейса — классический (Classic UI), дающий полный доступ ко всем функциям, и Blue Ocean — современный визуальный интерфейс, оптимизированный для отображения конвейеров[22][23]. Пользователи могут переключаться между ними. С 2021 года Blue Ocean не получает функциональных обновлений, только исправления безопасности[22].
- Многоязычная поддержка: интерфейс переведён на множество языков, включая русский, немецкий, французский и китайский. Язык выбирается автоматически на основе настроек браузера или может быть задан принудительно.
- Запуск модульных, интеграционных и функциональных тестов сразу после сборки для раннего выявления дефектов[19][24].
- Автоматизированное развёртывание артефактов в тестовые, промежуточные и продуктивные среды[18].
- Встроенный мониторинг и отчётность: история сборок, результаты тестов и показатели покрытия кода доступны через веб-интерфейс[24].
- Простую установку: Jenkins — автономное Java-приложение с готовыми пакетами для большинства операционных систем, запускаемое «из коробки»[25].
- Свободное распространение и возможность модификации кода без лицензионных отчислений[24].
Архитектура и технологии
Jenkins представляет собой автономное приложение, написанное на языке Java, которое функционирует на виртуальной машине Java (JVM)[26]. Для его работы требуется установленный Java Development Kit (JDK), при этом поддерживаются версии JDK 17 и 21[27].
Архитектура Jenkins является распределённой и основана на модели «контроллер-агент» (ранее «мастер-слейв»)[28]. Центральный узел, или контроллер (controller), управляет всеми процессами: координирует задачи, распределяет нагрузку и обслуживает веб-интерфейс. Исполнение сборок и тестов делегируется агентам (agents) — отдельным процессам, которые могут быть запущены на разных машинах с различными операционными системами и конфигурациями[26][29]. Такая архитектура позволяет масштабировать систему для обработки большого количества проектов и выполнять задачи параллельно.
Хотя ядро системы и плагины в основном написаны на Java, для определения конвейеров автоматизации (Pipelines) используется предметно-ориентированный язык (DSL), основанный на синтаксисе языка Groovy[30][31]. Это позволяет описывать сложные сценарии сборки, тестирования и развёртывания в виде кода (см. Jenkinsfile).
Благодаря использованию Java, Jenkins является кроссплатформенным решением[32]. Он поддерживает работу на большинстве популярных операционных систем, включая дистрибутивы Linux, Windows и macOS[30]. Поддерживаемые аппаратные архитектуры включают x86-64 и ARM. Jenkins может быть развёрнут как на физических или виртуальных серверах, так и в контейнеризированных средах с использованием Docker или в облачных платформах, таких как Amazon Web Services, Google Cloud Platform и Microsoft Azure.
Примеры использования
В практических сценариях Jenkins применяется для создания надёжных CI/CD-конвейеров, в которых каждое изменение кода автоматически проходит полный цикл проверки.
- Сборка (Build): сервер получает исходный код из Git-репозитория и формирует артефакты (например, через
mvn clean installдля Java-проектов илиnpm run buildдля проектов на Node.js)[33].
- Тестирование (Test): после успешной сборки запускаются автоматические тесты (например,
mvn test), а результаты публикуются в отчётах JUnit[34].
- Развёртывание (Deploy): прошедший тесты артефакт автоматически выкатывается в целевую среду — будь то Docker-контейнер, кластер Kubernetes или облачная платформа, причём условие развёртывания (например, только из основной ветки) задаётся декларативно в Jenkinsfile.
Запуск конвейера может инициироваться автоматически по веб-хуку, отправляемому системой контроля версий при каждом коммите, либо по расписанию (cron-триггер)[33].
Разработка и управление
Jenkins — это проект со свободным и открытым исходным кодом, который разрабатывается и поддерживается международным сообществом волонтёров[35]. Проект имеет чёткую структуру управления и является частью фонда Continuous Delivery Foundation (CDF), который, в свою очередь, входит в состав The Linux Foundation[36]. CDF юридически владеет активами проекта, а управление осуществляется через управляющий совет и открытые собрания[36]. Сообщество вносит вклад в развитие через написание кода, создание отчётов об ошибках и разработку плагинов.