У Jenkins есть разные конфигурации, которые можно задавать и настраивать в соответствии с потребностями различных проектов, команд и пользователей. Какие-то из этих конфигураций помогают управлять Jenkins как инструментом. А какие-то выполняют скорее статистическую роль, отслеживая работоспособность сервера Jenkins и его узлов. В статье разбираемся в деталях конфигураций и пытаемся понять, что с ними делать.
![](https://habrastorage.org/getpro/habr/upload_files/f46/a1f/bae/f46a1fbae4bccbf0de726ba874fea41a.jpg)
Глобальные настройки Jenkins
Configure System — раздел, где администратор может определить глобальные настройки, которые применяются ко всем проектам. Чтобы попасть в него, нужно нажать на кнопку Manage Jenkins на панели управления, а затем выбрать Configure System. После этого вы окажетесь на странице конфигурации.
![](https://habrastorage.org/getpro/habr/upload_files/7d2/929/1bc/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.
![](https://habrastorage.org/getpro/habr/upload_files/c4e/54c/044/c4e54c044c106ec38b79a5420e1c8b4f.png)
2. Перейдите к параметру Environment Variables и создайте новую переменную, например JENKINS_HOME. После этого вставьте новый путь к каталогу в раздел значения переменной, как показано ниже:
![](https://habrastorage.org/getpro/habr/upload_files/f36/3ce/b0d/f363ceb0d567f697bbc83848cfd39c85.png)
3. Перезапустите Jenkins и снова перейдите на страницу Configure System. На этот раз вы увидите измененный каталог:
![](https://habrastorage.org/getpro/habr/upload_files/e2d/fec/96a/e2dfec96a7f6cda6e8d71db4b9c1a5c2.png)
System message
System Message отображает сообщения на дашборде Jenkins. Цель этой конфигурации — публикация любого типа уведомлений. Но когда мы переходим на страницу панели инструментов Jenkins, обычно не видим никаких сообщений в выделенной области:
![](https://habrastorage.org/getpro/habr/upload_files/113/873/4c8/1138734c838519e24f4a7066db8e0276.png)
Разберёмся, как настроить системное сообщение в Jenkins:
поместите сообщение в текстовое поле System message;
нажмите кнопку Save.
![](https://habrastorage.org/getpro/habr/upload_files/755/7f3/337/7557f33374ddb555276a19ac06b3d646.png)
После этого вы будете перенаправлены на страницу панели инструментов Jenkins и сможете видеть сообщения в выделенном разделе:
![](https://habrastorage.org/getpro/habr/upload_files/e93/bd4/1e2/e93bd41e2ac832b47d25ccb7c84e288b.png)
Executors
Этот параметр конфигурации сообщает, сколько параллельных джоб можно запустить на сервере Jenkins. Например, на скрине ниже, мы видим число 2. Это значит, что одновременно могут выполняться два параллельных задания.
![](https://habrastorage.org/getpro/habr/upload_files/24c/324/e8b/24c324e8b275255127a371826cbc14d1.png)
Мы можем увеличивать это число в соответствии с нашими требованиями. Если мы изменим количество исполнителей (# of executors), в разделе Build Executor Status также отобразятся изменения:
![](https://habrastorage.org/getpro/habr/upload_files/447/642/2ca/4476422ca88722d389125889a1435d49.png)
Usage option
Usage option в Jenkins используется для работы над концепцией узлов. Узел — это, по сути, машина, которая является частью среды Jenkins и выполняет пайплайны. Параметр говорит о том, как графики Jenkins строятся на любом узле. Есть два режима:
Использовать узел как можно чаще — вариант по умолчанию. Всякий раз, когда есть сборка, которая может быть выполнена с помощью этого узла, Jenkins будет использовать его.
Создавать джобы только с выражениями меток, соответствующими этому узлу. В этом режиме Jenkins создаёт проект на узле только в том случае, если этот проект ограничен определёнными узлами с использованием выражения меток, и это выражение соответствует имени и/или меткам этого узла. Режим позволяет зарезервировать узел для определённых видов джоб.
![](https://habrastorage.org/getpro/habr/upload_files/9e3/cf2/f64/9e3cf2f640b1a2fb616f34be3a534013.png)
Quiet period
Если этот параметр не равен нулю, новые сборки проекта будут добавлены в очередь, но Jenkins будет ждать указанный период времени (в секундах) перед фактическим запуском сборки.
![](https://habrastorage.org/getpro/habr/upload_files/9d0/e9b/92b/9d0e9b92b27aab9151294dca3ea08553.png)
Разберём, как настроить Quiet period.
1.Перейдите на страницу Configure system и установите период времени, в течение которого вы хотите установить Quiet period. Не забудьте сохранить изменения.
![](https://habrastorage.org/getpro/habr/upload_files/18f/411/de7/18f411de74ef88db56f4311905a41a9e.png)
2. Теперь запустите любую джобу, дважды щелкнув по ссылке Build Now.
![](https://habrastorage.org/getpro/habr/upload_files/cd2/41c/be0/cd241cbe0f080e7d5590f718699ef7cd.png)
Jenkins подождёт некоторое время, прежде чем запустить сборку.
Jenkins URL
По умолчанию, параметр отображает HTTP-адрес установки Jenkins в виде localhost — http://localhost:8080/jenkins/. Мы можем записать DNS (доменное имя) компьютера или перезаписать локальный хост IP-адресом компьютера. Это значение позволяет Jenkins знать, как ссылаться на себя — отображать изображения или создавать ссылки в электронных письмах.
![](https://habrastorage.org/getpro/habr/upload_files/2c8/0d4/932/2c80d4932f5d0b0172a504aa02379ac5.png)
Environment variable
Переменные среды представлены в Jenkins в виде пар ключ-значение. Они применяются к каждой сборке на каждом узле. Мы можем использовать их в конфигурации Jenkins (as $key or ${key}), и добавлять в среду для процессов, запускаемых из сборки.
Посмотрим, как настраивать и использовать переменные среды в Jenkins.
1. На странице конфигурации укажите имя и значение переменной среды. Сохраните изменения.
![](https://habrastorage.org/getpro/habr/upload_files/cc2/509/f39/cc2509f39dbaabf9c7a23f225b8f7bb4.png)
2. Создайте новую джобу для демонстрации переменной среды.
![](https://habrastorage.org/getpro/habr/upload_files/d8a/909/dbd/d8a909dbdea3382df463a7f2dbf0d314.png)
3. Перейдите в раздел настройки джобы, а затем в раздел сборки. В разделе сборки щёлкните раскрывающийся список Add build step и выберите параметр Execute Windows batch command.
![](https://habrastorage.org/getpro/habr/upload_files/22b/352/91f/22b35291f3f5b67997b69d98fff03acd.png)
4. Теперь поместите приведенную ниже команду в текстовую область и нажмите кнопку Save. echo %ENV_DEMO%
Здесь ENV_DEMO
— это то же имя переменной, которое мы определили в разделе переменных среды.
![](https://habrastorage.org/getpro/habr/upload_files/1a1/855/5c8/1a18555c81979db2a1b03b51b32ee434.png)
5. Запустите сборку, щелкнув ссылку Build Now.
![](https://habrastorage.org/getpro/habr/upload_files/37e/22f/407/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" .
![](https://habrastorage.org/getpro/habr/upload_files/164/89b/077/16489b077d50d9eabc0cf3925dbcd679.png)
Email notification
Email notification настраивает параметры SMTP для отправки почты указанным получателям. В этом разделе есть два поля, которые нужно настроить:
SMTP server: здесь нужно указать имя почтового сервера SMTP. Jenkins использует JavaMail для отправки электронных писем.
Default user e-mail suffix: если адреса электронной почты пользователей можно вычислить автоматически с помощью суффикса, нужно указать этот суффикс.
![](https://habrastorage.org/getpro/habr/upload_files/cd8/22c/ced/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 и доступны для выполнения заданий на нём.
![](https://habrastorage.org/getpro/habr/upload_files/4ae/e85/b80/4aee85b80b3c9e3ec0c671815a7dfb9b.png)
Мы можем добавлять новые узлы, нажав кнопку New Node в левом меню. Или редактировать и обновлять настройки определённого узла, нажав на значок шестеренки напротив каждого из узлов.
Security в Jenkins: что это такое и какие опции предлагает
Jenkins используется в различных масштабах: от персонального компьютера в закрытой сети до огромных серверов, подключённых к интернету. Вне зависимости от его реализации раздел Security является одной из наиболее важных частей.
Начиная с Jenkins 2.0, большинство функций безопасности по умолчанию включены для обеспечения надёжной защиты данных. Однако администратор Jenkins может отключить эти функции в соответствии с требованиями проекта/команды.
![](https://habrastorage.org/getpro/habr/upload_files/dfd/7cd/985/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.
![](https://habrastorage.org/getpro/habr/upload_files/243/29f/98a/24329f98ada363044ba423e53100ebc2.jpg)
Подписка на курсы Слёрма на 3 месяца
Что даёт подписка
Совокупная стоимость всех курсов, которые входят в подписку, больше 1 000 000 рублей. Но вы платите значительно меньше — 60 000 рублей для тарифа с видеолекциями и практикой и 90 000 рублей для тарифа с видеолекциями, практикой, потоками, интенсивами и поддержкой наставников в закрытом чате.
Посмотреть, какие курсы входят в подписку, можно тут
vazir
Звучит крайне подозрительно