Учимся конфигурировать и настраивать Jenkins

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

f46a1fbae4bccbf0de726ba874fea41a.jpg

Глобальные настройки Jenkins

Configure System — раздел, где администратор может определить глобальные настройки, которые применяются ко всем проектам. Чтобы попасть в него, нужно нажать на кнопку Manage Jenkins на панели управления, а затем выбрать Configure System. После этого вы окажетесь на странице конфигурации. 

7d29291bcdf857cbfe9cdf7ed50deb45.png

Перечислим некоторые возможности этой страницы. 

Опция

Описание

Jenkins home directory

сообщает о размещении домашнего каталога Jenkins в системе.

System Message

отображает сообщения на странице Jenkinsdashboard.

Executors

сообщает, сколько параллельных джоб можно запустить.

Usage option

говорит о том, как графики Jenkins строятся на любом узле.

Quiet period

если этот параметр не равен нулю, новые сборки проекта добавятся в очередь, но Jenkins будет ждать указанный период времени (в секундах) перед фактическим запуском.

Jenkins URL

по умолчанию отображает HTTP-адрес установки Jenkins в форме localhost.

Environment variable

переменные среды применяются для каждой сборки на каждом узле. Их можно использовать в конфигурации Jenkins (*as $key or ${key} *), и они добавятся в среду процессов, запущенных из сборки.

Usage statistics

помогает отслеживать данные об использовании Jenkins.

Git Plugin

применяется для установки глобального имени пользователя git и данных электронной почты в Jenkins.

Email notification

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

Разберёмся с деталями использования каждого из этих параметров. 

Home Directory

Home directory сообщает, где в системе находится домашний каталог Jenkins. Также здесь отображена информация журнала, информация о плагинах, информация о хранилище джоб и прочие сведения, связанные с конфигурацией. По умолчанию Jenkins хранит все данные в этом каталоге файловой системы. 

Как настроить home directory в Jenkins:

1. Скопируйте все элементы, которые присутствуют в текущем каталоге, и вставьте их в новый каталог. После этого создайте папку и вставьте в неё все элементы из существующего каталога Jenkins.

c4e54c044c106ec38b79a5420e1c8b4f.png

2. Перейдите к параметру Environment Variables и создайте новую переменную, например JENKINS_HOME. После этого вставьте новый путь к каталогу в раздел значения переменной, как показано ниже:

f363ceb0d567f697bbc83848cfd39c85.png

3. Перезапустите Jenkins и снова перейдите на страницу Configure System. На этот раз вы увидите измененный каталог:

e2dfec96a7f6cda6e8d71db4b9c1a5c2.png

System message 

System Message отображает сообщения на дашборде Jenkins. Цель этой конфигурации — публикация любого типа уведомлений. Но когда мы переходим на страницу панели инструментов Jenkins, обычно не видим никаких сообщений в выделенной области:

1138734c838519e24f4a7066db8e0276.png

Разберёмся, как настроить системное сообщение в Jenkins:

7557f33374ddb555276a19ac06b3d646.png

После этого вы будете перенаправлены на страницу панели инструментов Jenkins и сможете видеть сообщения в выделенном разделе:

e93bd41e2ac832b47d25ccb7c84e288b.png

Executors 

Этот параметр конфигурации сообщает, сколько параллельных джоб можно запустить на сервере Jenkins. Например, на скрине ниже, мы видим число 2. Это значит, что одновременно могут выполняться два параллельных задания. 

24c324e8b275255127a371826cbc14d1.png

Мы можем увеличивать это число в соответствии с нашими требованиями. Если мы изменим количество исполнителей (# of executors), в разделе Build Executor Status также отобразятся изменения:

4476422ca88722d389125889a1435d49.png

Usage option 

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

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

  • Создавать джобы только с выражениями меток, соответствующими этому узлу. В этом режиме Jenkins создаёт проект на узле только в том случае, если этот проект ограничен определёнными узлами с использованием выражения меток, и это выражение соответствует имени и/или меткам этого узла. Режим позволяет зарезервировать узел для определённых видов джоб.

9e3cf2f640b1a2fb616f34be3a534013.png

Quiet period

Если этот параметр не равен нулю, новые сборки проекта будут добавлены в очередь, но Jenkins будет ждать указанный период времени (в секундах) перед фактическим запуском сборки. 

9d0e9b92b27aab9151294dca3ea08553.png

Разберём, как настроить Quiet period.

1.Перейдите на страницу Configure system и установите период времени, в течение которого вы хотите установить Quiet period. Не забудьте сохранить изменения.

18f411de74ef88db56f4311905a41a9e.png

2. Теперь запустите любую джобу, дважды щелкнув по ссылке Build Now. 

cd241cbe0f080e7d5590f718699ef7cd.png

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

Jenkins URL

По умолчанию, параметр отображает HTTP-адрес установки Jenkins в виде localhost — http://localhost:8080/jenkins/. Мы можем записать DNS (доменное имя) компьютера или перезаписать локальный хост IP-адресом компьютера. Это значение позволяет Jenkins знать, как ссылаться на себя — отображать изображения или создавать ссылки в электронных письмах.

2c80d4932f5d0b0172a504aa02379ac5.png

Environment variable

Переменные среды представлены в Jenkins в виде пар ключ-значение. Они применяются к каждой сборке на каждом узле. Мы можем использовать их в конфигурации Jenkins (as $key or ${key}), и добавлять в среду для процессов, запускаемых из сборки.

Посмотрим, как настраивать и использовать переменные среды в Jenkins. 

1. На странице конфигурации укажите имя и значение переменной среды. Сохраните изменения. 

cc2509f39dbaabf9c7a23f225b8f7bb4.png

2. Создайте новую джобу для демонстрации переменной среды.

d8a909dbdea3382df463a7f2dbf0d314.png

3. Перейдите в раздел настройки джобы, а затем в раздел сборки. В разделе сборки щёлкните раскрывающийся список Add build step и выберите параметр Execute Windows batch command.

22b35291f3f5b67997b69d98fff03acd.png

4. Теперь поместите приведенную ниже команду в текстовую область и нажмите кнопку Save. echo %ENV_DEMO%

Здесь ENV_DEMO — это то же имя переменной, которое мы определили в разделе переменных среды.

1a18555c81979db2a1b03b51b32ee434.png

5. Запустите сборку, щелкнув ссылку Build Now. 

37e22f407f72d5588fddf4d5edcb5872.png

Usage statistics

В любом проекте с открытым исходным кодом отслеживать данные об использовании очень сложно. Чтобы удовлетворить эту потребность, мы используем опцию Usage statistics. Когда она включена, Jenkins периодически отправляет информацию о: типе операционной системы и исполнителях, установленных плагинах и версиях, количестве джоб и др. Все подробности здесь — https://stats.jenkins.io/

Git Plugin 

Для загрузки кода из Git нужно настроить имя пользователя, а также адрес электронной почты для целей аутентификации. Jenkins предоставляет эту опцию в разделе Git Plugin:

  • Global Config user.name Value:  если мы укажем здесь адрес электронной почты, будет вызвана команда git config user. name «your username».

  • Global Config user.email Value: если мы укажем здесь адрес электронной почты, то будет вызвана команда git config user.email «your email».

16489b077d50d9eabc0cf3925dbcd679.png

Email notification

Email notification настраивает параметры SMTP для отправки почты указанным получателям. В этом разделе есть два поля, которые нужно настроить:

  • SMTP server: здесь нужно указать имя почтового сервера SMTP. Jenkins использует JavaMail для отправки электронных писем.

  • Default user e-mail suffix:  если адреса электронной почты пользователей можно вычислить автоматически с помощью суффикса, нужно указать этот суффикс.

cd822ccedbe29b4170cd2dd017343926.png

Что такое Global Tool Configurations 

Global Tool Configurations — один из подразделов в разделе System Configuration. Здесь мы можем определить конфигурации, а также информацию об установке глобальных инструментов, которые мы хотим интегрировать с Jenkins. Например, Maven, JDK, Git, Gradle или Ant. В таблице ниже приведен базовый список параметров, которые можно настроить в этом разделе.

Конфигурация

Детали

Maven Configuration

различные варианты настройки и установки конкретной версии Maven.

JDK Configuration

различные опции для настройки и установки конкретной версии JAVA.

Git Configuration

различные варианты настройки и установки конкретной версии Git.

Gradle Configuration

различные варианты настройки и установки конкретной версии Gradle.

Ant Configuration

различные опции для настройки и установки конкретной версии Ant.

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

Что такое Plugins Configurations

Раздел Plugins Configurations предоставляет опции для добавления, удаления, обновления, включения или отключения сторонних плагинов, которые помогают расширить функциональность Jenkins. 

  • Updates: все установленные плагины, для которых доступны новые версии, которые можно установить в качестве обновления.

  • Available: различные плагины, которые могут быть установлены по мере необходимости и которые в данный момент не установлены.

  • Installed: список всех установленных плагинов и их версий.

  • Advanced: здесь предоставляется возможность установить новый плагин, загрузив файл .hpi

Что такое Nodes Configurations

Nodes Configurations предоставляет возможности для добавления, удаления, управления и мониторинга различных узлов, на которых Jenkins выполняет джобы. Более того, в нём перечислены различные узлы, которые зарегистрированы на сервере Jenkins и доступны для выполнения заданий на нём.

4aee85b80b3c9e3ec0c671815a7dfb9b.png

Мы можем добавлять новые узлы, нажав кнопку New Node в левом меню. Или редактировать и обновлять настройки определённого узла, нажав на значок шестеренки напротив каждого из узлов. 

Security в Jenkins: что это такое и какие опции предлагает

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

Начиная с Jenkins 2.0, большинство функций безопасности по умолчанию включены для обеспечения надёжной защиты данных. Однако администратор Jenkins может отключить эти функции в соответствии с требованиями проекта/команды. 

dfd7cd985eb40fe355e0b1d4d501c14d.png

В разделе Configure Global Security представлены различные параметры, помогающие определить, кому разрешен доступ к системе и её использованию.

Конфигурация

Детали

Authentication

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

Authorization

здесь приведены параметры для настройки уровня авторизации на сервере Jenkins. Некоторыми из вариантов могут быть Matrix-based security (безопасность на основе матрицы), Project-based Matrix Authorization Strategy (стратегия матричной авторизации на основе проекта), Legacy mode (устаревший режим), Logged-in users can do anything (пользователи, вошедшие в систему, могут делать все, что угодно) и др. 

Markup Formatter

определяет форматирование текста, которое будет реализовано для входных данных.

Agents

Jenkins использует TCP-порт для связи с входящими подключёнными агентами. Поскольку брандмауэрам сложно защитить случайный порт, можно вместо этого указать фиксированный номер порта и соответствующим образом настроить брандмауэр.

CSRF Protection

если HTTP-прокси находится между клиентом браузера и сервером Jenkins, и вы получаете ответ 403 при отправке формы в Jenkins, может помочь проверка этой опции.

API Token

здесь представлен вариант того, как должен быть сгенерирован токен API.

SSH Server

Jenkins может выступать в качестве SSH-сервера для запуска подмножества команд CLI. Здесь также можно указать номер порта TCP/IP для SSH-сервера.

В этом разделе мы можем настроить различные параметры, связанные с безопасностью и сделать Jenkins более защищённым.

Коротко о главном

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

24329f98ada363044ba423e53100ebc2.jpg

Подписка на курсы Слёрма на 3 месяца

Что даёт подписка

Совокупная стоимость всех курсов, которые входят в подписку, больше 1 000 000 рублей. Но вы платите значительно меньше — 60 000 рублей для тарифа с видеолекциями и практикой и 90 000 рублей для тарифа с видеолекциями, практикой, потоками, интенсивами и поддержкой наставников в закрытом чате.

Посмотреть, какие курсы входят в подписку, можно тут

© Habrahabr.ru