«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.