«1. Введение
Jenkins — один из самых популярных используемых сегодня инструментов CI/CD. Это позволяет нам автоматизировать каждый аспект жизненного цикла программного обеспечения, от создания до развертывания.
В этом уроке мы рассмотрим одну из самых мощных функций Jenkins: параметризованные сборки.
2. Определение параметров сборки
Параметр сборки позволяет нам передавать данные в наши задания Jenkins. Используя параметры сборки, мы можем передать любые данные, которые захотим: имя ветки git, секретные учетные данные, имена хостов и порты и так далее.
Любое задание или конвейер Jenkins можно параметризовать. Все, что нам нужно сделать, это установить флажок на вкладке «Общие настройки» с надписью «Этот проект параметризован»:
Затем мы нажимаем кнопку «Добавить параметр». Отсюда мы должны указать несколько частей информации:
-
Тип: тип данных для параметра (строка, логическое значение и т. д.) Имя: имя, по которому параметр будет идентифицирован. Значение по умолчанию: необязательное значение, которое будет используется, когда пользователь не указывает один. Описание: необязательный текст, описывающий, как используется параметр
Одно задание или конвейер Jenkins может иметь несколько параметров. Единственное ограничение — имя параметра должно быть уникальным.
2.1. Типы параметров
Jenkins поддерживает несколько типов параметров. Ниже приведен список наиболее распространенных, но имейте в виду, что разные плагины могут добавлять новые типы параметров:
-
Строка: любая комбинация символов и цифр Выбор: предопределенный набор строк, из которых пользователь может выбрать значение Учетные данные: предопределенные учетные данные Jenkins. Файл: полный путь к файлу в файловой системе. Многострочная строка: то же, что и String, но допускает символы новой строки. Пароль: аналогичен типу учетных данных, но позволяет передавать простой текстовый параметр. зависит от задания или конвейера. Запуск: абсолютный 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
Запуск задания с пользовательским интерфейсом Jenkins — это самый простой способ передать параметры сборки. Все, что нам нужно сделать, это войти в систему, перейти к нашей работе и щелкнуть ссылку 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.