Код
#подборки

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 по распределённой системе: есть ведущий мастер-сервер, который управляет всеми процессами и распределяет задачи, а есть слейв-серверы — агенты, которые снимают с мастера лишнюю нагрузку.

Обычно в проекте есть несколько слейв-серверов для разных задач: один — для разработки, второй — для тестирования, третий — для обработки запросов пользователей. Технически, пока приложение ещё не разрослось, его можно разрабатывать и на одном сервере. Но, если он вдруг упадёт, пострадают сразу все: и пользователи, и тестировщики, и программисты.

Инфографика: Оля Ежак для Skillbox Media

Ещё это полезно, если вы хотите написать несколько версий приложения под разные системы — например, одно под «Винду», а другое — под 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.

Страница Oracle для выбора файла JDK
Скриншот: Oracle / Skillbox Media

Загрузка может занять до одного часа. После этого запускаем установочный файл.

Запуск установочного файла JDK на Windows
Скриншот: Oracle / Skillbox Media

Запоминаем или копируем путь установки: C:\Program Files\Java\jdk-21\, он нам ещё пригодится. Дожидаемся конца установки.

Завершение установки JDK на Windows
Скриншот: Oracle / Skillbox Media

Готово! Закрываем окошко, JDK установлен.

Теперь переходим к установке непосредственно Jenkins. Для этого переходим на страницу загрузки, выбираем Windows, скачиваем дистрибутив и запускаем установщик.

Запуск Jenkins на Windows и выбор способа входа в систему
Скриншот: Jenkins / Skillbox Media

В окне установки меняем способ входа в систему с дефолтного Run service as local or domain user на Run service as LocalSystem. Поля авторизации при этом деактивируются, но ничего страшного — логин и пароль мы введём позже.

Скриншот: Jenkins / Skillbox Media

Порт, на котором будет работать Jenkins, оставляем дефолтный — 8080.

Скриншот: Jenkins / Skillbox Media

Тестируем порт, нажимая кнопку Test Port.

Скриншот: Jenkins / Skillbox Media

Тестирование прошло успешно, на следующем шаге нам пригодится сохранённый ранее путь к JDK — у нас это C:\Program Files\Java\jdk-21\. Вводим путь к директории в окошко и жмём Next.

Скриншот: Jenkins / Skillbox Media

На следующем шаге соглашаемся на установку предлагаемых компонентов.

Скриншот: Jenkins / Skillbox Media

Установка Jenkins завершена!

Скриншот: Jenkins / Skillbox Media

Закрываем установщик и проверяем, появился ли нужный процесс в диспетчере задач.

Скриншот: Jenkins / Skillbox Media

Готово! Как подготовить программу к работе, мы расскажем в следующем разделе. А пока — разберёмся с Ubuntu.

Установка Jenkins на Ubuntu

Перед началом установки проверим, есть ли в системе пакет Java — без него Jenkins не будет работать. Чтобы это сделать, заходим в терминал (сочетанием клавиш Ctrl + Alt + T или через поиск) и вводим такую команду:

java -version

Если в ответ получаем 'java' not found, значит, пакета Java в системе нет.

Инструкция, как установить Java на Ubuntu

1. Первым делом зайдём на официальный сайт Oracle и скачаем пакет JDK для Linux. Нам нужен установочный файл x64 Compressed Archive.

Скриншот: Oracle / Skillbox Media

2. Копируем ссылку на скачивание файла и, используя команду wget, копируем установочный файл напрямую на наш компьютер.

wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz 

3. Создадим папку, в которую распакуем наш архив.

sudo mkdir -p /usr/lib/наша_папка

4. Вместо наша_папка подставляем своё название. Теперь в эту директорию распаковываем архив.

tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/lib/наша_папка

5. JDK будем устанавливать с помощью PPA (Personal Package Archive), добавляем его в список репозитория.

add-apt-repository ppa:linuxuprising/java

6. Обновляем список пакетов.

sudo apt update

7. Теперь устанавливаем непосредственно наш JDK 21.

sudo apt update

8. В процессе соглашаемся с правилами использования.

9. Готово! Проверяем успешность установки, запросив версию Java.

java -version

Если язык установлен успешно, консоль покажет версию Java. В нашем случае это 21-я.

Переходим непосредственно к установке Jenkins

1. Сначала получаем ключ шифрования GPG с помощью команды curl. Ключ нужен для проверки подлинности пакетов, загружаемых из репозитория Jenkins. Чтобы два раза не вставать, установим ключ в систему командой sudo tee.

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc > /dev/null

2. После этого добавим репозиторий Jenkins в список пакетов Ubuntu.

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
    https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
    /etc/apt/sources.list.d/jenkins.list > /dev/null

Корректность ввода адресов путей можно проверить на странице загрузки.

Скриншот: Jenkins / Skillbox Media

3. Снова обновляем список пакетов.

sudo apt update

4. Настало время установить Jenkins.

sudo apt install jenkins

5. После установки запускаем сервис.

sudo apt install jenkins

6. Проверяем статус работы.

sudo service jenkins status

В качестве ответа должна быть строка Active: active (running)…

7. И последний штрих. Чтобы Jenkins нормально работал, нужно открыть ему сетевой порт 8080 в брандмауэре. Для этого откроем SSH.

sudo ufw allow OpenSSH

8. Запустим брандмауэр.

sudo ufw enable

9. Откроем порт, необходимый для работы Jenkins.

sudo ufw allow 8080

10. Проверяем, что всё действительно открылось.

sudo ufw status

В качестве ответа должны быть строки, содержащие allow и Anywhere.

Вы восхитительны! Теперь Jenkins крутится на вашем сервере.

Как настроить Jenkins

Чтобы начать настройку Jenkins, введите:

  • http://ip_сервера:8080 — для Ubuntu;
  • http://localhost:8080 — для Windows.

В остальном настройка будет выглядеть почти идентично на обеих системах. Мы будем рассматривать настройку под Windows.

1. После перехода по ссылке откроется окно разблокировки Jenkins. Здесь видим, пожалуй, единственное различие в системах — адрес файла с паролем. Для Ubuntu он будет отличаться от «виндового».

Скриншот: Jenkins / Skillbox Media

2. Вводим адрес в окошко Administrator password и нажимаем Продолжить.

3. Откроется окно с предложением установить плагины. Можно скачать дефолтный набор или выбрать плагины самому. Выбираем первый вариант.

Скриншот: Jenkins / Skillbox Media

4. Начинается загрузка.

Скриншот: Jenkins / Skillbox Media

5. Если что-то пошло не так и какой-то плагин не загрузился, нажимаем кнопку Retry и повторяем попытку.

Скриншот: Jenkins / Skillbox Media

6. После установки плагинов вводим данные авторизации: имя пользователя и пароль.

Скриншот: Jenkins / Skillbox Media

7. Сохраняем и получаем сообщение об успехе — Jenkins готов к работе!

Скриншот: Jenkins / Skillbox Media

8. Нажимаем кнопку Start using Jenkins и переходим в интерфейс программы.

Скриншот: Jenkins / Skillbox Media

Profit! Установка и настройка Jenkins закончена. Теперь он готов к выполнению наших задач.

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована