Jenkins для начинающих: что это, зачем нужен и как его установить
Разгоняем свой конвейер по сборке приложений.
Давным-давно, когда IT ещё только зарождались, программисты ездили в офис с огромными стопками перфокарт, чтобы закоммитить изменения. Те времена давно в прошлом, и теперь новые фичи вносятся в код непрерывно и почти сразу доставляются пользователям. Во многом это стало возможным благодаря системам потоковой сборки — таким, например, как Jenkins.
Из этой статьи вы узнаете:
Эксперт
Дмитрий Зайцев
CTO Flocktory, программный директор профессии «DevOps-инженер» в Skillbox, директор программного комитета DevOpsConf.
Для начала: что такое CI/CD
В основе работы Jenkins лежит подход непрерывной разработки. Это значит, что разработчики добавляют новые функции в код постоянно, как бы собирая воедино кусочки пазла. Другой подход — итеративный, когда сначала пишется полноценная версия программы, а уже потом тестируется и публикуется.
Непрерывная разработка состоит из двух частей:
- CI (continuous integration) — непрерывная интеграция. Идея в том, что все новшества в коде сразу добавляются в мастер-ветку проекта.
- CD (continuous delivery) — непрерывная доставка. Результаты работы программистов доставляются на сервер приложения или в тестовую среду, где их проверяют тестировщики.
Оба понятия обычно используются вместе, отсюда и название подхода — CI/CD. Есть и другие практики бесперебойной доставки кода — если хотите узнать о них больше, почитайте наш вводный гайд по методологии DevOps.
Коротко шаги CI/CD-конвейера можно описать так:
- Сборка. Разработчик пишет код по заданию и добавляет его к основному ПО в репозитории с помощью CI-инструментов (о них расскажем чуть позже).
- Тестирование. Команда QA-инженеров проверяет код ручными или автоматическими способами. Если найдётся баг или дефект, код возвращают программистам на доработку.
- Релиз. Заказчик смотрит на продукт и, если его всё устраивает, направляет его конечным пользователям.
- Обратная связь и доработка. Пользователи оставляют свои отзывы о работе программы. На основе этих данных составляют новые ТЗ для программистов, и наш конвейер запускается снова.
Плюс такого подхода в том, что можно быстро доставлять новые фичи пользователям, не дожидаясь финального релиза. Но есть и обратная сторона: чтобы обслуживать конвейер, нужен целый штат тестировщиков и DevOps-инженеров, что может быть затратно для небольших компаний.
Что такое Jenkins
Jenkins — это фреймворк для непрерывной разработки, написанный на Java. Слово «фреймворк» означает, что вы можете гибко настраивать систему под свои нужды с помощью плагинов и расширений — например, подключить систему контроля версий, Yandex Cloud, Jira и многое другое.
Даже самые базовые функции в Jenkins — это, по сути, плагины, которые отвечают за разные этапы работы конвейера: от сборки до тестирования. Называется такой набор pipeline, и доступен он прямо «из коробки». Если нужны ещё расширения — их можно скачать из маркетплейса Jenkins.
Работает Jenkins по распределённой системе: есть ведущий мастер-сервер, который управляет всеми процессами и распределяет задачи, а есть слейв-серверы — агенты, которые снимают с мастера лишнюю нагрузку.
Обычно в проекте есть несколько слейв-серверов для разных задач: один — для разработки, второй — для тестирования, третий — для обработки запросов пользователей. Технически, пока приложение ещё не разрослось, его можно разрабатывать и на одном сервере. Но, если он вдруг упадёт, пострадают сразу все: и пользователи, и тестировщики, и программисты.
Ещё это полезно, если вы хотите написать несколько версий приложения под разные системы — например, одно под «Винду», а другое — под Linux или macOS. Тогда вполне уместно будет взять несколько слейв-серверов и на каждый из них накатить своё окружение.
Чем хорош Jenkins
Перечислим главные киллер-фичи этой системы.
- Кросс-платформенность. Есть версии приложения для Linux, macOS и Windows.
- Философия Open Source. Приложение можно использовать бесплатно, а его код доступен для изучения всем желающим.
- Интеграция с облачными решениями: Azure, Google Cloud, DigitalOcean, Yandex Cloud и другими.
- Развитое сообщество. Решение возможных проблем облегчается поиском уже решённых похожих случаев.
- Много плагинов. В одном только маркетплейсе Jenkins их около 2000.
- Подходит для сложных проектов. Но это можно отнести и к минусам, так как Jenkins может показаться «тяжеловатым» для мелких задач.
А теперь настало время запустить наш Jenkins-конвейер.
Устанавливаем Jenkins
Так как Jenkins — это Java-приложение, для его установки нам потребуется соответствующая среда. Это комплект разработчика приложений на базе Java от Oracle — JDK (Java Development Kit).
Устанавливать будем на две системы — Windows 11 и Ubuntu 22.04. Начнём с «оконной» ОС.
Установка на Windows
Для начала подготовим окружение. Скачиваем последнюю модификацию комплекта JDK с официального сайта, в нашем случае это jdk-21_windows-x64_bin.exe.
Загрузка может занять до одного часа. После этого запускаем установочный файл.
Запоминаем или копируем путь установки: C:\Program Files\Java\jdk-21\, он нам ещё пригодится. Дожидаемся конца установки.
Готово! Закрываем окошко, JDK установлен.
Теперь переходим к установке непосредственно Jenkins. Для этого переходим на страницу загрузки, выбираем Windows, скачиваем дистрибутив и запускаем установщик.
В окне установки меняем способ входа в систему с дефолтного Run service as local or domain user на Run service as LocalSystem. Поля авторизации при этом деактивируются, но ничего страшного — логин и пароль мы введём позже.
Порт, на котором будет работать Jenkins, оставляем дефолтный — 8080.
Тестируем порт, нажимая кнопку Test Port.
Тестирование прошло успешно, на следующем шаге нам пригодится сохранённый ранее путь к JDK — у нас это C:\Program Files\Java\jdk-21\. Вводим путь к директории в окошко и жмём Next.
На следующем шаге соглашаемся на установку предлагаемых компонентов.
Установка Jenkins завершена!
Закрываем установщик и проверяем, появился ли нужный процесс в диспетчере задач.
Готово! Как подготовить программу к работе, мы расскажем в следующем разделе. А пока — разберёмся с Ubuntu.
Установка Jenkins на Ubuntu
Перед началом установки проверим, есть ли в системе пакет Java — без него Jenkins не будет работать. Чтобы это сделать, заходим в терминал (сочетанием клавиш Ctrl + Alt + T или через поиск) и вводим такую команду:
Если в ответ получаем 'java' not found, значит, пакета Java в системе нет.
Инструкция, как установить Java на Ubuntu
1. Первым делом зайдём на официальный сайт Oracle и скачаем пакет JDK для Linux. Нам нужен установочный файл x64 Compressed Archive.
2. Копируем ссылку на скачивание файла и, используя команду wget, копируем установочный файл напрямую на наш компьютер.
3. Создадим папку, в которую распакуем наш архив.
4. Вместо наша_папка подставляем своё название. Теперь в эту директорию распаковываем архив.
5. JDK будем устанавливать с помощью PPA (Personal Package Archive), добавляем его в список репозитория.
6. Обновляем список пакетов.
7. Теперь устанавливаем непосредственно наш JDK 21.
8. В процессе соглашаемся с правилами использования.
9. Готово! Проверяем успешность установки, запросив версию Java.
Если язык установлен успешно, консоль покажет версию Java. В нашем случае это 21-я.
Переходим непосредственно к установке Jenkins
1. Сначала получаем ключ шифрования GPG с помощью команды curl. Ключ нужен для проверки подлинности пакетов, загружаемых из репозитория Jenkins. Чтобы два раза не вставать, установим ключ в систему командой sudo tee.
2. После этого добавим репозиторий Jenkins в список пакетов Ubuntu.
Корректность ввода адресов путей можно проверить на странице загрузки.
3. Снова обновляем список пакетов.
4. Настало время установить Jenkins.
5. После установки запускаем сервис.
6. Проверяем статус работы.
В качестве ответа должна быть строка Active: active (running)…
7. И последний штрих. Чтобы Jenkins нормально работал, нужно открыть ему сетевой порт 8080 в брандмауэре. Для этого откроем SSH.
8. Запустим брандмауэр.
9. Откроем порт, необходимый для работы Jenkins.
10. Проверяем, что всё действительно открылось.
В качестве ответа должны быть строки, содержащие allow и Anywhere.
Вы восхитительны! Теперь Jenkins крутится на вашем сервере.
Как настроить Jenkins
Чтобы начать настройку Jenkins, введите:
- http://ip_сервера:8080 — для Ubuntu;
- http://localhost:8080 — для Windows.
В остальном настройка будет выглядеть почти идентично на обеих системах. Мы будем рассматривать настройку под Windows.
1. После перехода по ссылке откроется окно разблокировки Jenkins. Здесь видим, пожалуй, единственное различие в системах — адрес файла с паролем. Для Ubuntu он будет отличаться от «виндового».
2. Вводим адрес в окошко Administrator password и нажимаем Продолжить.
3. Откроется окно с предложением установить плагины. Можно скачать дефолтный набор или выбрать плагины самому. Выбираем первый вариант.
4. Начинается загрузка.
5. Если что-то пошло не так и какой-то плагин не загрузился, нажимаем кнопку Retry и повторяем попытку.
6. После установки плагинов вводим данные авторизации: имя пользователя и пароль.
7. Сохраняем и получаем сообщение об успехе — Jenkins готов к работе!
8. Нажимаем кнопку Start using Jenkins и переходим в интерфейс программы.
Profit! Установка и настройка Jenkins закончена. Теперь он готов к выполнению наших задач.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!