Раньше программистам приходилось записывать небольшие фрагменты кода на перфокарты и иногда целыми «партиями» возить их в офис, чтобы собирать все части вручную для выполнения на компьютере. Это ощутимо замедляло и усложняло процесс создания любого ПО.
Сегодня разработчики могут собирать, обновлять, тестировать и развёртывать программы автоматически, а затем почти мгновенно доставлять их пользователям. В большинстве случаев это возможно благодаря системам непрерывной разработки (CI/CD), одной из которых является Jenkins. Что собой представляет инструмент и как его устанавливать, подробнее расскажем в этом материале.
Что такое CI/CD
Функции Jenkins основаны на концепции непрерывной разработки, которая позволяет обновлять программу на любом этапе программирования. Это прямая противоположность итеративного метода, где сначала создаётся рабочий вариант ПО, а уже потом анализируется и выпускается.
К методу непрерывной разработки относятся:
-
CI (continuous integration). Означает непрерывную интеграцию, где изменения в коде автоматически вливаются в основную ветку ПО.
-
CD (continuous delivery). Непрерывная доставка, при которой все новшества программы автоматически разворачиваются на тестовых или рабочих серверах без лишнего участия разработчиков.
Чаще всего эти два термина применяются вместе и работают как единая методология CI/CD, в которую входит:
-
Сборка. Программист разрабатывает и интегрирует код в базовый продукт в репозитории через инструменты CI.
-
Тестирование. Тестировщики автоматически или вручную проверяют работоспособность решения. Если есть ошибки, результат направляется на доработку.
-
Релиз. После всех доработок утверждается финальная версия и публикуется на продакшен-серверах для конечных пользователей.
-
Анализ отзывов и доработка. Клиенты оценивают программу и оставляют о ней свои отзывы. На основании этой информации формируются новые задачи для программистов, и процесс запускается заново.
Преимущество метода в том, что дорабатывать ПО и показывать его пользователям можно, не дожидаясь окончательной версии программы. С другой стороны, для полноценной работы нужна большая команда тестировщиков и DevOps-специалистов — это может сильно ударить по бюджету маленьких организаций.
Что такое Jenkins и какие у него особенности
Jenkins — это система потоковой сборки для автоматизации всех видов задач, связанных с созданием, тестированием, доставкой или развёртыванием программного обеспечения.
При этом Jenkins — не просто сервер непрерывной интеграции, а полноценный фреймворк для создания CI/CD-систем и других автоматизированных процессов разработки. Всё благодаря гибкой настройке программы, которая включает:
-
Модульность. Модульная архитектура позволяет расширять функциональность Jenkins с помощью плагинов и адаптировать работу программы под конкретные задачи и процессы разработки.
-
Масштабируемость. Jenkins постоянно развивается благодаря открытой архитектуре и обширному сообществу. Разработчики могут создавать для него собственные плагины и интеграции, тем самым адаптируя программу к новым требованиям и технологиям. Также это позволяет добавлять слейв-узлы, тем самым увеличивая общую производительность ПО.
-
Высокую совместимость. Благодаря большой библиотеке плагинов Jenkins легко интегрируется с различными инструментами разработки, системами управления версиями, облачными платформами и другими сервисами.
К примеру, с помощью плагинов Jenkins можно интегрировать с API-платформой МТС Exolve, через которую программисты получают автоматические SMS о статусе сборки ПО, данные об ошибках в коде, о завершении определённых этапов разработки и прочих событиях. Так специалисты смогут быстрее получать актуальную информацию о ходе своих проектов и экономить время для других задач.
Как работает Jenkins
Даже основные возможности Jenkins, по сути, являются плагинами, каждый из которых курирует различные этапы работы программы — от начальной сборки до завершающего развёртывания. Такой набор изначально встроен в программу и называется пайплайном. При этом дополнительные модули легко загрузить из магазина программы.
Фреймворк Jenkins функционирует в распределённой архитектуре: мастер-сервер (контроллер) координирует процессы и делегирует задачи, а вспомогательные слейв-серверы — агенты разгружают контроллер и выполняют поставленные им команды.
Как правило, для одного проекта задействуется несколько агентов, которые решают различные задачи по сборке, тестированию, проверке кода, развёртыванию приложения и т. д. Технически на начальных этапах такую разработку можно вести и на одном сервере, но, если он выйдет из строя, проблемы появятся у всех — от программистов до конечных потребителей.
В целом у фреймворка для непрерывной разработки Jenkins множество преимуществ:
-
Простая настройка. Jenkins содержит исполняемые файлы, которые легко устанавливаются на различные операционные системы вроде Windows и Mac. Так как это автономное решение на базе Java, его настройка занимает всего пять минут.
-
Открытый исходный код. Принцип Open Source позволяет работать в программе бесплатно. Кроме того, сообщество Jenkins предлагает огромную библиотеку учебных пособий, кейсов и другой информации для программирования.
-
Большой выбор плагинов. В Jenkins насчитывается более 2000 дополнительных модулей для управления инфраструктурой, анализа, тестирования, интеграций и других задач разработки.
Основной минус Jenkins — его сложность. Программа рассчитана на профессиональных разработчиков, поэтому начинающим пользователям потребуется время на освоение.
Установка Jenkins
Перед инсталляцией необходимо подготовить соответствующую среду выполнения. Для этого нужны:
-
Компьютер, сервер или виртуальная машина с подходящей операционной системой. Оборудование должно иметь минимум 256 МБ оперативной памяти и 1 ГБ свободного места на диске (для контейнера Docker — от 10 ГБ).
-
Установленный Java Development Kit (версия 8 и выше). Это связано с тем, что Jenkins основан на Java-технологии.
Как установить Jenkins на Windows
Для установки софта нужно выполнить несколько простых шагов:
-
Переходим на сайт Jenkins и загружаем с него установщик для Windows. Для скачивания может понадобиться несколько минут.
-
Запускаем полученный файл, выбираем установочный путь для программы и нажимаем Next.
-
В поле Local Type выбираем вариант Run service as LocalSystem и переходим на следующий этап установки.
-
В графе Port Number оставляем значение по умолчанию — 8080. Затем выбираем Test Port — начнётся тестирование порта.
-
После окончания проверки появится ещё одно поле для ввода — добавляем в него путь к своему JDK.
-
Далее можно будет выбрать дополнительные модули — здесь выставляем дефолтные настройки.
-
Затем выбираем опцию Install, ждём окончания установочного процесса и нажимаем на Finish.
На этом этапе Jenkins полностью установлен.
Как установить Jenkins на Ubuntu
Для начала необходимо подтвердить наличие JDK в системе. Вписываем в терминал:
java -version
Если Java присутствует, в интерфейсе появится версия пакета этой программы. Затем можно начать инсталляцию:
sudo apt update
Окончательно устанавливаем Jenkins в систему:
sudo apt install jenkins
По завершении инсталляции запускаем программу:
sudo systemctl start jenkins
Оценить статус работы Jenkins можно через команду:
sudo service jenkins status
Если программа активирована, появится ярко-зелёная надпись active (running).
Также перед настройкой и работой в Jenkins нужно сконфигурировать брандмауэр. Открываем SSH:
sudo ufw allow OpenSSH
После этого активируем брандмауэр:
sudo ufw enable
Разрешим доступ к порту 8080, который Jenkins использует по дефолту, и вводим в терминал:
sudo ufw allow 8080
Нужно убедиться, что все настройки учтены брандмауэром. Добавляем команду:
sudo ufw status
Если в графе Action значится ALLOW, а в графе From — Anywhere, то в фаерволе открылся доступ к Jenkins.
Настройка Jenkins
Для адаптации Jenkins к конкретным требованиям проекта нужно задать настройки. Если программа предназначена для Windows, следует открыть в браузере http://localhost:8080. Если Jenkins стоит на сервере, то вместо localhost используем его IP-адрес — например, http://192.168.1.100:8080. Это позволит зайти в интерфейс программы.
Остальные этапы настройки Jenkins для разных ОС выглядят практически идентично. Рассмотрим алгоритм на примере Windows:
-
После загрузки страницы мы получим возможность разблокировать программу: нужно ввести пароль в свободное поле. При этом адрес нахождения пароля для тех или иных ОС будет отличаться, но это единственное расхождение в настройке в разных системах.
-
Вносим в соответствующую графу нужный пароль и выбираем «Продолжить».
-
Программа предложит установить необходимые плагины. Можно выбрать вариант по умолчанию или добавить модули самостоятельно. Выбираем первый вариант — его вполне достаточно для базовой настройки Jenkins.
-
После загрузки плагинов откроется окно для ввода данных. Заполняем имя пользователя, пароль, Ф. И. О. и email.
-
Следующий шаг: настройка URL-адреса для системы. Здесь можно оставить дефолтную версию или назначить собственный вариант.
На этом настройка программы полностью завершена. Теперь можно выбрать Start using Jenkins и перейти в интерфейс системы.
Заключение
Jenkins — удобный инструмент для автоматизации сборки, тестирования и развёртывания ПО. Система не только основана на принципах CI/CD, но и является полноценным фреймворком: её легко настроить, масштабировать, а также интегрировать со множеством различных сервисов.
При этом открытый исходный код Jenkins не только предлагает бесплатный доступ ко всем функциям программы, но и обеспечивает поддержку обширного сообщества разработчиков.