Jenkins

Jenkins — свободный сервер автоматизации, предназначенный для упрощения процессов сборки, тестирования и развёртывания приложений, реализующих практики непрерывной интеграции (CI) и непрерывной доставки/развёртывания (CD)[17][18][19].

undefined
Общие сведения
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]. Сообщество вносит вклад в развитие через написание кода, создание отчётов об ошибках и разработку плагинов.

Примечания