Учимся конфигурировать и настраивать Jenkins
У Jenkins есть разные конфигурации, которые можно задавать и настраивать в соответствии с потребностями различных проектов, команд и пользователей. Какие-то из этих конфигураций помогают управлять Jenkins как инструментом. А какие-то выполняют скорее статистическую роль, отслеживая работоспособность сервера Jenkins и его узлов. В статье разбираемся в деталях конфигураций и пытаемся понять, что с ними делать.
Глобальные настройки Jenkins
Configure System — раздел, где администратор может определить глобальные настройки, которые применяются ко всем проектам. Чтобы попасть в него, нужно нажать на кнопку Manage Jenkins на панели управления, а затем выбрать Configure System. После этого вы окажетесь на странице конфигурации.
Перечислим некоторые возможности этой страницы.
Опция | Описание |
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.
2. Перейдите к параметру Environment Variables и создайте новую переменную, например JENKINS_HOME. После этого вставьте новый путь к каталогу в раздел значения переменной, как показано ниже:
3. Перезапустите Jenkins и снова перейдите на страницу Configure System. На этот раз вы увидите измененный каталог:
System message
System Message отображает сообщения на дашборде Jenkins. Цель этой конфигурации — публикация любого типа уведомлений. Но когда мы переходим на страницу панели инструментов Jenkins, обычно не видим никаких сообщений в выделенной области:
Разберёмся, как настроить системное сообщение в Jenkins:
После этого вы будете перенаправлены на страницу панели инструментов Jenkins и сможете видеть сообщения в выделенном разделе:
Executors
Этот параметр конфигурации сообщает, сколько параллельных джоб можно запустить на сервере Jenkins. Например, на скрине ниже, мы видим число 2. Это значит, что одновременно могут выполняться два параллельных задания.
Мы можем увеличивать это число в соответствии с нашими требованиями. Если мы изменим количество исполнителей (# of executors), в разделе Build Executor Status также отобразятся изменения:
Usage option
Usage option в Jenkins используется для работы над концепцией узлов. Узел — это, по сути, машина, которая является частью среды Jenkins и выполняет пайплайны. Параметр говорит о том, как графики Jenkins строятся на любом узле. Есть два режима:
Использовать узел как можно чаще — вариант по умолчанию. Всякий раз, когда есть сборка, которая может быть выполнена с помощью этого узла, Jenkins будет использовать его.
Создавать джобы только с выражениями меток, соответствующими этому узлу. В этом режиме Jenkins создаёт проект на узле только в том случае, если этот проект ограничен определёнными узлами с использованием выражения меток, и это выражение соответствует имени и/или меткам этого узла. Режим позволяет зарезервировать узел для определённых видов джоб.
Quiet period
Если этот параметр не равен нулю, новые сборки проекта будут добавлены в очередь, но Jenkins будет ждать указанный период времени (в секундах) перед фактическим запуском сборки.
Разберём, как настроить Quiet period.
1.Перейдите на страницу Configure system и установите период времени, в течение которого вы хотите установить Quiet period. Не забудьте сохранить изменения.
2. Теперь запустите любую джобу, дважды щелкнув по ссылке Build Now.
Jenkins подождёт некоторое время, прежде чем запустить сборку.
Jenkins URL
По умолчанию, параметр отображает HTTP-адрес установки Jenkins в виде localhost — http://localhost:8080/jenkins/. Мы можем записать DNS (доменное имя) компьютера или перезаписать локальный хост IP-адресом компьютера. Это значение позволяет Jenkins знать, как ссылаться на себя — отображать изображения или создавать ссылки в электронных письмах.
Environment variable
Переменные среды представлены в Jenkins в виде пар ключ-значение. Они применяются к каждой сборке на каждом узле. Мы можем использовать их в конфигурации Jenkins (as $key or ${key}), и добавлять в среду для процессов, запускаемых из сборки.
Посмотрим, как настраивать и использовать переменные среды в Jenkins.
1. На странице конфигурации укажите имя и значение переменной среды. Сохраните изменения.
2. Создайте новую джобу для демонстрации переменной среды.
3. Перейдите в раздел настройки джобы, а затем в раздел сборки. В разделе сборки щёлкните раскрывающийся список Add build step и выберите параметр Execute Windows batch command.
4. Теперь поместите приведенную ниже команду в текстовую область и нажмите кнопку Save. echo %ENV_DEMO%
Здесь ENV_DEMO
— это то же имя переменной, которое мы определили в разделе переменных среды.
5. Запустите сборку, щелкнув ссылку Build Now.
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».
Email notification
Email notification настраивает параметры SMTP для отправки почты указанным получателям. В этом разделе есть два поля, которые нужно настроить:
SMTP server: здесь нужно указать имя почтового сервера SMTP. Jenkins использует JavaMail для отправки электронных писем.
Default user e-mail suffix: если адреса электронной почты пользователей можно вычислить автоматически с помощью суффикса, нужно указать этот суффикс.
Что такое 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 и доступны для выполнения заданий на нём.
Мы можем добавлять новые узлы, нажав кнопку New Node в левом меню. Или редактировать и обновлять настройки определённого узла, нажав на значок шестеренки напротив каждого из узлов.
Security в Jenkins: что это такое и какие опции предлагает
Jenkins используется в различных масштабах: от персонального компьютера в закрытой сети до огромных серверов, подключённых к интернету. Вне зависимости от его реализации раздел Security является одной из наиболее важных частей.
Начиная с Jenkins 2.0, большинство функций безопасности по умолчанию включены для обеспечения надёжной защиты данных. Однако администратор Jenkins может отключить эти функции в соответствии с требованиями проекта/команды.
В разделе 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.
Подписка на курсы Слёрма на 3 месяца
Что даёт подписка
Совокупная стоимость всех курсов, которые входят в подписку, больше 1 000 000 рублей. Но вы платите значительно меньше — 60 000 рублей для тарифа с видеолекциями и практикой и 90 000 рублей для тарифа с видеолекциями, практикой, потоками, интенсивами и поддержкой наставников в закрытом чате.
Посмотреть, какие курсы входят в подписку, можно тут