22 августа 2022 г.
719

Описание, установка и настройка Jenkins

Описание

Jenkins - это система, для обеспечения процесса CI\CD.

CI - Continuous Integration - непрерывная интеграция. Это DevOps модель, в которой, общем случае, разработчики делают commit кода в repository и после этого происходит автоматический запуск build или compilation этого кода, затем автоматически запускаются тесты.

CD - Continuos Delivery/Deployment - непрерывная доставка/развертывание. Выполняются шаги из CI и затем артефакт (скомпилированный код или любая другая сущность) устанавливается на сервера.

    Jenkins состоит из:
  • Master - набор xml конфигураций на сервере и запущенный процесс, по умолчанию web-интерфейс открывается на 8080 порту
  • Slave - агенты. Могут быть установлены на сервере вместе с мастером, или отдельно. Каждый агент может иметь несколько процессов. Количество агентов означает количество сборок, которые можно одновременно запустить. Можно настроить агентов по запросу, чтобы ресурсы сервера не занимались зря, при этом, когда выполняется сборка jenkins запускает агента в docker, запрос выполняется и работа агента завершается. Мастер связывается с агентами или по ssh или агенты связываются с мастером jnpl (java network lancher protokol). На агенты можно повесить метки и указывать определенные действия для агентов с указанными метками

Установка

Установка в CentOS:
добавление репозитория
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate
импорт ключа
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
установка
yum install epel-release java-11-openjdk jenkins git
применение изменений
systemctl daemon-reload
открытие порта
firewall-cmd --permanent --add-service=jenkins
firewall-cmd --reload
Установка в Ubuntu:
добавление ключа репозитория
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
добавление репозитория
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
установка
apt update
apt install openjdk-11-jre jenkins git
открытие порта
ufw allow 8080
Запуск и добавление в автозагрузку
systemctl start jenkins
systemctl enable jenkins

Теперь можно подключится к web-интерфейсу jenkins перейдя на адрес сервера на котором он установлен с указанием порта 8080, например http://192.168.10.15:8080

Для начала работы нужно ввести ключ, который находится на сервере в файле
/var/lib/jenkins/secrets/initialAdminPassword

Можно установить все предлагаемые плагины по кнопке Install suggested plugins или открыть окно выбора устанавливаемых плагинов по кнопке Select plugins to install.

Затем нужно задать имя пользователя, пароль и email администратора и нажать кнопку Save and Contune.

Теперь можно войти.

  • В каталоге /var/lib/jenkins/jobs содержатся задания сборки в виде файлов, если сделать бэкап этого каталога, то можно будет восстановить сборку после удаления;
  • В каталоге /var/lib/jenkins/jobs/job_name/build - содержатся билды сборки;
  • В каталоге /var/lib/jenkins/workspace - содержатся файлы, которая сборка использует в процессе работы.

Настройка

    По умолчанию сборщик имеет два процесса, если требуется изменить количество нужно:
  1. Зайти в настройки по кнопке Настроить Jenkins;
  2. Зайти в Управление средами сборки;
  3. Нажать на Шестеренку справа у нужного сборщика;
  4. Указать Количество процессов-исполнителей.
    Изменение метки у агента (сборщика):
  1. Зайти в настройки по кнопке Настроить Jenkins;
  2. Зайти в Управление средами сборки;
  3. Нажать на Шестеренку справа у нужного сборщика;
  4. Указать Метки.
    Для более понятного отображения процесса сборок можно установить плагин Blue Ocean, для этого нужно:
  1. Зайти в настройки по кнопке Настроить Jenkins;
  2. Зайти в Управление плагинами;
  3. Выбрать вкладку Доступные;
  4. Набрать в поиске Blue Ocean;
  5. Поставить галочку у плагина;
  6. Нажать кнопку Install without restart внизу страницы.