1. Введение
Jenkins — один из самых популярных инструментов CI/CD, используемых сегодня. Это позволяет нам автоматизировать каждый аспект жизненного цикла программного обеспечения, от создания до развертывания.
В этом уроке мы сосредоточимся на одной из самых мощных функций Jenkins — параметризованных сборках.
2. Определение параметров сборки
Параметр сборки позволяет нам передавать данные в наши задания Jenkins . Используя параметры сборки, мы можем передать любые данные, которые захотим: имя ветки git, секретные учетные данные, имена хостов и порты и так далее.
Любое задание или конвейер Jenkins можно параметризовать. Все, что нам нужно сделать, это поставить галочку на вкладке «Общие настройки» « Этот проект параметризован»
:
Затем нажимаем кнопку « Добавить параметр
». Отсюда мы должны указать несколько частей информации:
Тип
: тип данных для параметра (строка, логическое значение и т. д.).Name
: имя, идентифицирующее параметрЗначение по умолчанию
: необязательное значение, которое будет использоваться, если пользователь его не укажет.Описание
: необязательный текст, описывающий, как используется параметр.
Одно задание или конвейер Jenkins может иметь несколько параметров . Единственное ограничение состоит в том, что имя параметра должно быть уникальным.
2.1. Типы параметров
Jenkins поддерживает несколько типов параметров. Ниже приведен список наиболее распространенных, но имейте в виду, что разные плагины могут добавлять новые типы параметров:
Строка
: любая комбинация символов и цифр.Выбор
: предопределенный набор строк, из которых пользователь может выбрать значение.Учетные
данные: предварительно определенные учетные данные Jenkins.File
: полный путь к файлу в файловой системе.Многострочная строка
: то же, что иString
, но допускает символы новой строки .Пароль
: аналогичен типуCredentials
, но позволяет нам передавать простой текстовый параметр, характерный для задания или конвейера.Run
: абсолютный URL-адрес одного запуска другого задания.
3. Использование параметров сборки
Как только мы определили один или несколько параметров, следующим шагом будет их использование. Ниже мы рассмотрим различные способы доступа к значениям параметров.
3.1. Традиционные рабочие места
В традиционном задании Jenkins мы определяем один или несколько шагов
сборки . Наиболее распространенным этапом сборки является выполнение сценария оболочки или пакетных команд Windows .
Допустим, у нас есть параметр сборки с именем packageType
. Внутри сценария оболочки мы можем получить доступ к параметрам сборки, как и к любой другой переменной среды, используя синтаксис оболочки:
${packageType}
А с пакетными командами мы используем родной синтаксис Windows:
%packageType%
Мы также можем создавать шаги сборки, которые выполняют задачи Gradle или цели Maven. Оба этих типа шагов могут обращаться к параметрам сборки так же, как и к любой другой переменной среды.
3.2. Трубопроводы
Внутри конвейера Jenkins мы можем получить доступ к параметру сборки несколькими способами.
Во-первых, все параметры сборки помещаются в переменную params .
Это означает, что мы можем получить доступ к значению параметра, используя запись через точку:
pipeline {
agent any
stages {
stage('Build') {
when {
expression { params.jdkVersion == "14" }
}
}
}
}
Во-вторых, параметры сборки добавляются в среду конвейера. Это означает, что мы можем использовать более короткий синтаксис оболочки внутри шага, выполняющего сценарий оболочки:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo "${packageType}"
}
}
}
}
4. Установка значений параметров
До сих пор мы видели, как определять параметры и использовать их в наших заданиях Jenkins. Последним шагом является передача значений для наших параметров при выполнении заданий.
4.1. Интерфейс Дженкинса
Запуск задания с Jenkins UI — это самый простой способ передать параметры сборки. Все, что нам нужно сделать, это войти в систему, перейти к нашей работе и щелкнуть ссылку Build with Parameters :
Это приведет нас к экрану, который запрашивает ввод для каждого параметра. В зависимости от типа параметра способ ввода его значения будет разным .
Например, строковые
параметры будут отображаться в виде обычного текстового поля, логические
параметры — в виде флажка, а параметры выбора
— в виде раскрывающегося списка:
Как только мы укажем значение для каждого параметра, все, что нам нужно сделать, это нажать кнопку « Создать
», и Дженкинс начнет выполнение задания.
4.2. Удаленное выполнение
Задания Jenkins также можно выполнять с помощью удаленного вызова API . Мы делаем это, вызывая специальный URL-адрес задания на нашем сервере Jenkins:
http://<JENKINS_URL>/job/<JOB_NAME>/buildWithParameters/packageType=war&jdkVersion=11&debug=true
Обратите внимание, что мы должны отправлять эти запросы в виде команды POST
. Мы также должны предоставить учетные данные, используя базовую аутентификацию HTTP.
Давайте посмотрим полный пример с использованием curl
:
curl -X POST --user user:apiToken \
http://<JENKINS_URL>/job/<JOB_NAME>/buildWithParameters/packageType=war&jdkVersion=11&debug=true
Пользователь может быть любым пользователем Jenkins, а apiToken
—
это любой связанный токен API для этого пользователя.
5. Вывод
В этой статье мы узнали, как использовать параметры сборки как с заданиями Jenkins, так и с конвейерами. Параметры сборки — это мощный способ сделать любое задание Jenkins динамичным, и они необходимы для создания современных конвейеров CI/CD.