Перейти к основному содержимому

Руководство по параметризованным сборкам Jenkins

· 4 мин. чтения

1. Введение

Jenkins — один из самых популярных инструментов CI/CD, используемых сегодня. Это позволяет нам автоматизировать каждый аспект жизненного цикла программного обеспечения, от создания до развертывания.

В этом уроке мы сосредоточимся на одной из самых мощных функций Jenkins — параметризованных сборках.

2. Определение параметров сборки

Параметр сборки позволяет нам передавать данные в наши задания Jenkins . Используя параметры сборки, мы можем передать любые данные, которые захотим: имя ветки git, секретные учетные данные, имена хостов и порты и так далее.

Любое задание или конвейер Jenkins можно параметризовать. Все, что нам нужно сделать, это поставить галочку на вкладке «Общие настройки» « Этот проект параметризован» :

./7402d8a309151c9aeb04f538bf188e72.jpg

Затем нажимаем кнопку « Добавить параметр ». Отсюда мы должны указать несколько частей информации:

  • Тип : тип данных для параметра (строка, логическое значение и т. д.).
  • 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 :

./cbc7b330789004b6f6cfff2c714957d3.jpg

Это приведет нас к экрану, который запрашивает ввод для каждого параметра. В зависимости от типа параметра способ ввода его значения будет разным .

Например, строковые параметры будут отображаться в виде обычного текстового поля, логические параметры — в виде флажка, а параметры выбора — в виде раскрывающегося списка:

./170046408085402910955782bc486184.jpg

Как только мы укажем значение для каждого параметра, все, что нам нужно сделать, это нажать кнопку « Создать », и Дженкинс начнет выполнение задания.

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.