Что такое Jenkins и зачем он нужен

Делает рутину за вас

Что такое Jenkins и зачем он нужен

В современной разработке автоматизация практически обязательная часть процесса создания продукта. Обычно это процесс непрерывной интеграции и развёртывания приложения CI/CD. Инструменты CI/CD помогают быстрее выпускать изменения, находить баги до релиза и удобно и безопасно масштабировать процессы.

Один из первых и самых известных инструментов — Jenkins, открытый сервер автоматизации для надёжной последовательности шагов разработки, то есть пайплайна. 

Jenkins появился в 2011 году как форк проекта Hudson, который Косуке Кавагути запустил в 2004 году. За годы вокруг проекта выросла большая экосистема плагинов и пользователей.

Рассказываем подробнее, как он устроен и чем именно приносит пользу.

Что такое Jenkins и зачем он нужен

Jenkins — это сервер автоматизации с открытым исходным кодом, который помогает собирать, тестировать и развёртывать приложения. Это программа, которая выполняет техническую рутину вместо человека: сама следит за кодом и выполняет нужные задачи. В результате команда меньше ошибается и быстрее получает результат.

Сегодня около половины всех разработчиков в мире всё ещё используют его в работе.

Что такое Jenkins и зачем он нужен
Источник: cloudbees.com

В реальной жизни этот сервис часто стоит на отдельном сервере.

Это работает как веб-приложение: у Jenkins есть интерфейс в браузере, где можно настраивать выполнение нужных процессов. Он поддерживает большое количество плагинов, поэтому подходит почти для любых проектов.

Что именно делает Jenkins

Сам по себе Jenkins не делает ничего — он просто выполняет сценарии работы, которые ему прописали разработчики. Он нужен для автоматизации процессов разработки и помогает внедрить пайплайн непрерывной интеграции и доставки CI/CD. Классическая схема этого подхода выглядит так:

Что именно делает Jenkins
Источник: devops.spb.ru

Что есть что на этой схеме:

Plan — команда решает, что нужно сделать и как это будет работать.

Code — разработчики пишут код.

Build — система собирает проект и превращает код в готовое приложение или контейнер.

Test — система автоматически проверяет, что всё работает и ничего не сломалось.

Release — проверенная версия подготавливается к выкладке.

Deploy — приложение автоматически выкладывается на сервер или в облако.

Operate — программа работает для пользователей в реальной среде.

Monitor — идёт сбор информации, чтобы понять, всё ли стабильно работает.

И дальше цикл повторяется: по результатам мониторинга команда снова планирует улучшения. Такой подход снижает количество неожиданных ошибок.

Без автоматизации команда тратит много времени на повторяющиеся задачи. Например, вручную запускать тесты после каждого изменения неудобно. Jenkins делает это сам по расписанию или по определённому событию — например, как только видит новый коммит.

Когда сборка и тестирование происходят автоматически, релизы можно делать чаще. Особенно важна автоматизация в стартапах и онлайн-сервисах.

Ещё один плюс — прозрачность разработки. Всегда можно посмотреть статус сборки, историю изменений и логи. Если что-то пошло не так, легко понять, на каком шаге возникла проблема.

Автоматизация CI/CD — основа DevOps

Схема CI/CD делится на два главных этапа:

  • Continuous Integration означает, что код регулярно объединяется в общий репозиторий. После этого автоматически запускаются тесты и проверки. 
  • Continuous Delivery отвечает за доставку готового продукта пользователям.

Вот простой пример. У нас есть две небольшие программы, которые должны работать вместе. Одна обрабатывает оплаты клиентов, другая отправляет письма. Если обновить сервис оплаты и забыть проверить совместимость API, письма могут сломаться. Jenkins нужен как раз на этом месте: он автоматически протестирует интеграцию и выявит проблему до того, как у пользователей начнутся проблемы.

В Jenkins можно настроить пайплайн, который будет выполняться без участия человека. Например: скачать программный код → установить зависимости → запустить тесты → собрать docker-образ → отправить на сервер. 

Все части пайплайна могут выглядеть по-разному, а могут одинаково — например, как программы на Python. Такой небольшой скрипт может выполняться как шаг тестов:

# импортируем модуль для завершения программы с кодом ошибки
import sys

# условная проверка результата теста
tests_passed = False

# если тесты не прошли
if not tests_passed:
    # выводим сообщение об ошибке
    print("Tests failed")
    # завершаем программу с кодом ошибки
    sys.exit(1)

# если всё хорошо
print("All tests passed")

Теперь, если программа завершится с кодом 1, Jenkins не даст программе разворачиваться дальше и дойти до финальных пользователей.

Основные задачи, которые решает Jenkins

Вот главное, что умеет сервис.

Автоматическая сборка проекта. Например, компиляция java-приложения или сборка docker-контейнера. Это подготовка приложения к запуску.

Запуск тестов. Jenkins запускает любые виды тестов, если у вас уже есть инструмент для их выполнения.

Развёртывание приложения на сервере, где им будут пользоваться. Jenkins автоматически обновляет приложение после сборки на нужном сервере.

Другие полезные вещи: умеет отправлять уведомления в Slack, создавать отчёты и запускать анализ качества кода. Получается, что Jenkins становится центром автоматизации проекта.

Полезный блок со скидкой

Если вам интересно разбираться со смартфонами, компьютерами и прочими гаджетами и вы хотите научиться создавать софт под них с нуля или тестировать то, что сделали другие, — держите промокод Практикума на любой платный курс: KOD (можно просто на него нажать). Он даст скидку при покупке и позволит сэкономить на обучении.

Бесплатные курсы в Практикуме тоже есть — по всем специальностям и направлениям, начать можно в любой момент, карту привязывать не нужно, если что.

Как работает Jenkins: архитектура и основные понятия

Вот классическая схема: основной узел управления, который отправляет задачи в системы, которые их выполняют.

Как работает Jenkins: архитектура и основные понятия
Источник: dspenard.medium.com

На этой схеме есть Контроллер (Master Node) и Агенты (Agent).

Контроллер управляет заданиями, хранит конфигурации, распределяет работу. Тут настраивается общий пайплайн.

Агенты выполняют сборку, тесты и деплой. Чаще всего агент — это контейнер и установленное на нём программное обеспечение, которого достаточно для выполнения задачи. Например, если нужно выполнить скрипт на Python, в контейнере должен быть установлен Python и другие нужные утилиты для выполнения кода.

Такая система удобна: если работа занимает много времени, можно добавить больше агентов. Тогда задачи выполняются одновременно. А если один агент выходит из строя, Master может перенаправить задачу на другой. Это повышает устойчивость.

Задачи (Jobs/Pipelines) и шаги (Steps)

В Jenkins всё строится вокруг задач. Это сценарии с описанием, что нужно сделать. Внутри задачи есть шаги: конкретные команды или действия.

Пайплайн — более современный способ описания задач. Он хранится в виде кода в файле, то есть конфигурация лежит рядом с проектом.

Как может выглядеть такой файл:

// Jenkins Pipeline написан на Groovy DSL
// этот файл должен называться Jenkinsfile
// он лежит в source-репозитории проекта

pipeline {

    // указываем, что задачу может выполнить любой доступный агент
    agent any

    stages {

        stage('Checkout source') {
            steps {
                // выводим сообщение в лог Jenkins
                echo 'Getting source code from server'

                // Jenkins скачивает исходный код (source)
                // это шаг интеграции с Git-сервером
                git 'https://github.com/example/open-software-project.git'
            }
        }

        stage('Build software') {
            steps {
                // в реальном проекте здесь должна быть сборка проекта
                // например: sh 'npm install' или sh 'mvn package'
                echo 'Building software for integration'
            }
        }

        stage('Integration test') {
            steps {
                // здесь выполняются интеграционные тесты
                // если команда завершится с ошибкой — pipeline остановится
                echo 'Running integration automation'
            }
        }

        stage('Deploy to server') {
            steps {
                // здесь происходит автоматическое развёртывание
                // например через ssh или docker
                echo 'Deploying software to production server'
            }
        }
    }
}

Плагины — основа гибкости Jenkins

Дженкинсом пользуются много лет большое количество команд, поэтому для него уже создано 2300 плагинов. Они добавляют интеграции с разными сервисами и расширяют функциональность. Без плагинов Jenkins был бы гораздо менее полезным.

Например, есть плагины для работы с GitHub, Docker, Kubernetes. Ещё плагины помогают строить отчёты и визуализации. Можно видеть графики успешных и неуспешных сборок и анализировать стабильность проекта. Но слишком много плагинов тоже плохо, потому что это замедляет работу.

Установка Jenkins: первые шаги

Jenkins можно развернуть на локальном компьютере или сервере. Для этого нужно сделать несколько вещей.

Системные требования и предварительная подготовка

Так как Jenkins написан на Java, для запуска нужен компьютер или сервер с установленной Java 11 или 17 (JDK). Но это не значит, что разработчик будет писать код на Java. Это просто движок, на котором работает сам Jenkins.

Ещё нужно достаточно оперативной памяти — около 2 гигабайт для небольших проектов.

Пошаговая установка на Windows

Сначала устанавливаем Java. Проще всего скачать и установить JDK. После этого в терминале командной строки PowerShell проверьте установку командой java -version. Если версия отображается — всё работает.

После этого скачиваем Jenkins с официального сайта jenkins.io. Берём установочный .msi-файл, запускаем его и следуем инструкциям. 

По умолчанию Jenkins устанавливается как служба Windows, запускается автоматически и использует порт 8080. Откройте браузер на странице http://localhost:8080. Нужно будет ввести пароль администратора, который находится в файле примерно по такому пути:

C:\Program Files\Jenkins\secrets\initialAdminPassword

Пошаговая установка на macOS

Проверяем, что на машине установлен пакетный менеджер Homebrew для установки других программ. Для этого открываем терминал и выполняем команду:

brew --version

Если видите версию — Homebrew установлен. Если появится сообщение command not found — нужно установить такой командой:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

После этого нужно выполнить инструкции, которые показывает скрипт, и снова проверить установку. Когда всё заработало, устанавливаем Jenkins такой командой:

brew install jenkins-lts

А запускаем — такой:

brew services start jenkins-lts

Открываем веб-приложение в браузере по адресу:

http://localhost:8080

Чтобы получить пароль администратора, нужна ещё одна команда в Терминале:

cat ~/.jenkins/secrets/initialAdminPassword

Копируем его отсюда и вставляем в окно запроса.

Базовая настройка Jenkins после установки

После установки в первую очередь нужно проверить список плагинов и подключить систему контроля версий. Например, добавить свои учётные данные для GitHub. Без этого Jenkins не сможет забирать код для выполнения.

В любых реальных проектах важны ещё два шага:

  • Уведомления. Если сборка падает, команда должна узнать об этом сразу. Это повышает скорость реакции на ошибки.
  • Безопасность: создать пользователей и задать права доступа.

Настройка плагинов: какие установить

В первую очередь обычно устанавливают git-плагин. Он позволяет подключать репозитории. Ещё полезен pipeline-плагин для работы с Jenkinsfile.

Если используете Docker, установите docker-плагин. Он позволит собирать и запускать контейнеры прямо из пайплайна. Это удобно для микросервисов.

Для уведомлений можно добавить подходящие конкретно вам плагины, например Slack или Email. Туда Jenkins будет отправлять сообщения о статусе сборки.

Всё это важно регулярно обновлять, чтобы снизить риск уязвимостей.

Настройка системы и глобальные параметры безопасности

В настройках системы можно задать глобальные параметры: путь к JDK, настройки почты и переменные окружения. Это влияет на все задачи.

Для безопасности нужно отключить анонимный доступ и создать роли для пользователей. Иначе любой сможет изменять конфигурацию. Ещё обязательно использовать HTTPS. Это защитит данные при передаче. Особенно важно, если Jenkins доступен из интернета.

Часто задаваемые вопросы о Jenkins

Ещё несколько фактов для закрепления.

Jenkins — это только для java-проектов?

Нет, Jenkins не ограничен Java. Он написан на Java, но может работать с любыми языками. Главное, чтобы на сервере были установлены нужные инструменты.

Можно запускать python-скрипты, node.js-приложения и go-проекты. Jenkins просто выполняет команды. Ему всё равно, на каком языке написан код.

Чем Jenkins отличается от GitLab CI или GitHub Actions?

Дженкинс — это самостоятельный сервер, который нужно устанавливать и поддерживать. GitLab CI и GitHub Actions встроены в платформы.

Преимущество Jenkins — гибкость и огромное количество плагинов. Его можно адаптировать под сложные корпоративные процессы. Но нужно потратить время на настройку.

GitHub Actions проще запустить в небольшом проекте, но в больших инфраструктурах Jenkins часто даёт больше контроля. Поэтому выбор зависит от задач команды и ресурсов на поддержку.

Какие есть альтернативы Jenkins в 2026 году?

В 2026 году популярны GitHub Actions, GitLab CI/CD и CircleCI. Они предлагают облачные решения без необходимости поднимать собственный сервер. Ещё есть инструменты вроде Azure DevOps и Bitbucket Pipelines. Они интегрированы с экосистемами своих платформ.

Jenkins остаётся востребованным, у него большое сообщество, и он гибкий. Во многих компаниях он уже встроен в процессы. Выбор инструмента всегда зависит от проекта, потому что универсального решения пока нет.

Бонус для читателей

Если вам интересно погрузиться в мир ИТ и при этом немного сэкономить, держите наш промокод на курсы Практикума. Он даст вам скидку при оплате, поможет с льготной ипотекой и даст безлимит на маркетплейсах. Ладно, окей, это просто скидка, без остального, но хорошая.

Вам может быть интересно
easy