Конфигурация направленной работы с помощью плагина Jenkins DSL

Организации все чаще прибегают к использованию Jenkins для автоматизации процессов сборки и тестирования, что делает ручное управление заданиями Jenkins затруднительным. Хорошая новость заключается в том, что плагин Jenkins DSL позволяет определять задания Jenkins с использованием синтаксиса языка DSL (Domain Specific Language).

Jenkins DSL позволяет хранить задания в системах контроля версий, делиться ими с другими пользователями и создавать новые задания на основе шаблонов. В этом руководстве вы узнаете, как использовать плагин Jenkins DSL для автоматизации разработки приложений.

Продолжайте чтение, чтобы больше не приходилось мучительно кликать по интерфейсу Jenkins для создания заданий!

Предварительные условия

В этом руководстве будет представлена практическая демонстрация. Если вы хотите следовать за ней, убедитесь, что у вас есть следующее.

  • A Linux machine – This guide uses Ubuntu 20.04.
  • Java 11+ и установленный Jenkins на вашей машине под управлением Linux .
  • Процесс интеграции Jenkins с репозиториями Git.
  • Сборка: Задача для добавления набора плагинов Pipeline, используемых для реализации и интеграции непрерывных конвейеров доставки в Jenkins.
  • Сборка: Groovy – возможность напрямую выполнить код Groovy.

Установка плагина Jenkins DSL

Поддержание согласованности между заданиями может быть сложной задачей, но плагин Jenkins DSL решает эту проблему. Как? Позволяя вам определять задания в программной форме, в человекочитаемом файле.

Но прежде чем создавать задания, вам необходимо установить плагин Jenkins DLS:

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

java -version && systemctl status jenkins

Теперь вы готовы установить плагин Jenkins DSL, если у вас есть вывод, аналогичный нижеприведенному.

Checking Java version and Jenkins status

2. Затем откройте свой любимый веб-браузер и перейдите по адресу http://your_server_ip:8080/pluginManager/available. Замените your_server_ip:8080 на фактический IP-адрес и номер порта вашего сервера Jenkins.

3. Наконец, установите плагин Jenkins DSL следующим образом:

  • Как показано ниже, введите Job DSL в поле поиска в правом верхнем углу.

Если у вас уже установлен плагин Job DSL и вы обновились с более старой версии, скрипты Job DSL не появятся в списке при поиске Job DSL. Вы можете перейти по адресу http://your_server_ip:8080/pluginManager/installed, чтобы проверить, есть ли плагин Job DSL.

  • Установите флажок рядом с Job DSL опцией.
  • Нажмите “Установить без перезапуска” внизу, чтобы установить плагин Jenkins Job DSL.
Installing the Jenkins DSL plugin

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

Viewing Jenkins DLS Plugin Installation Progress

Создание зерновой работы Jenkins с использованием плагина Jenkins DSL

Теперь, когда у вас установлен плагин Jenkins DSL, не стесняйтесь создавать зерновую работу Jenkins. Напишите базовый скрипт Job DSL и внедрите его в зерновую работу Jenkins. Вы создадите работу freestyle, которая будет выводить сообщение “Привет, мир!” в консоль Jenkins.

Для включения скрипта Job DSL в начальное задание Jenkins:

1. Перейдите на панель инструментов Jenkins и нажмите «Новый элемент» в левой боковой панели. Браузер перенаправит вас на страницу создания нового элемента (второй шаг).

Adding a New Item

2. Затем создайте новый элемент с помощью следующего:

  • Введите имя элемента, как показано ниже. Но в этом учебнике имя элемента установлено как seed.
  • Выберите Проект свободной конфигурации (повторяемое задание сборки, скрипт или конвейер) из доступных вариантов.
  • Нажмите «OK» внизу, чтобы создать новый элемент, и браузер перенаправится на страницу конфигурации нового элемента.
Creating seed job

3. Оставьте значения по умолчанию для всех остальных разделов на странице конфигурации нового элемента.

Прокрутите вниз до раздела «Сборка», нажмите кнопку выпадающего списка «Добавить шаг сборки» и выберите «Обработка DSL-заданий». Это открывает вариант, где вы предоставите DSL-скрипт (четвертый шаг).

Selecting process job DSLs

4. Теперь выберите вариант «Использовать предоставленный DSL-скрипт», как показано ниже, и заполните следующий код в поле.

Этот код представляет собой определение задания свободной конфигурации с именем jenkins-job-demo-1, которое использует шаг оболочки для вывода сообщения «Привет, мир». Имя задания – это то, что будет отображаться в пользовательском интерфейсе Jenkins.

// Sets the API method you want to use (job)
job('jenkins-job-demo-1') { // Sets the name of the job to jenkins-job-demo-1
	// Define what the job does
  steps {
		// Prints a message
    shell('echo Hello World! This job is working!!')
  }
}

Существует множество доступных методов для создания различных типов задач в Jenkins, которые вы можете найти в официальной документации.

Providing the DSL Script

5. Нажмите “Сохранить” внизу страницы, чтобы сохранить конфигурацию для нового элемента (сида).

Saving Configuration

6. В заключение, перейдите на свой рабочий стол Jenkins, чтобы убедиться, что созданная вами сид-задача существует, как показано ниже.

Verifying the seed Job

Запуск сид-задачи

Вы успешно создали и проверили сид-задачу. Но как узнать, что задача работает? Вы запустите сид-задачу по скрипту DSL, предоставленному в четвертом шаге раздела “Создание сид-задачи Jenkins с использованием плагина Jenkins DSL”.

1. На своем рабочем столе Jenkins щелкните по сид-задаче, чтобы перейти на страницу ее конфигурации.

Navigating into the seed Job Page

2. Затем нажмите “Построить сейчас” в левой боковой панели, чтобы запустить задачу.

Running the Seed Job

3. Нажмите F5 для обновления страницы. Вы увидите новую сборку в разделе “История сборок” с успешным статусом (зеленая галочка) внизу слева, как показано ниже.

Этот вывод указывает, что сид-задача успешно выполнилась, создав новую задачу Jenkins (jenkins-job-demo-1) в разделе “Сгенерированные элементы”.

Viewing the See Job Works and Generated a New Job

4. Теперь перейдите на свой рабочий стол Jenkins. Как показано ниже, вы увидите новую задачу Jenkins (jenkins-job-demo-1), созданную сид-задачей.

Щелкните по вновь созданной задаче, чтобы получить доступ к ее странице конфигурации.

Verifying See Job’s Generated Job

5. Нажмите “Построить сейчас”, чтобы запустить созданную задачу (jenkins-job-demo-1).

Running the Generated Job (jenkins-job-demo-1)

6. Наконец, щелкните по кнопке со стрелкой вниз рядом с успешной сборкой в разделе История сборок, как показано ниже. Выберите Вывод консоли из контекстного меню, чтобы увидеть вывод работы.

Accessing Console Output of the Generated Job (jenkins-job-demo-1)

Если сгенерированная задача работает, вы увидите сообщение “Hello World! This job is working!!”, как показано ниже, это сообщение, которое вы определили в скрипте Job DSL.

На этом этапе вы успешно создали и запустили задачу Jenkins с использованием плагина Job DSL!

Viewing Console Output

Создание задачи для CI/CD-пайплайна с использованием плагина Jenkins DSL

На данный момент вы узнали, как создать и запустить задачу Jenkins freestyle с использованием плагина Job DSL. Вы автоматизируете нечеловеческую часть процесса разработки программного обеспечения, создав задачу Jenkins для CI/CD-пайплайна.

Конкретно, вы создадите задачу, которая извлекает код из репозитория GitHub, собирает код и запускает модульные тесты.

Для создания задачи Jenkins для CI/CD-пайплайна:

1. Перейдите по ссылке http://your_server_ip:8080/job/seed/configure в вашем веб-браузере, чтобы настроить вашу исходную задачу. Замените your_server_ip на IP-адрес вашего сервера Jenkins и замените seed на название вашей задачи.

2. Затем прокрутите вниз до раздела Сборка, найдите поле Сценарии DSL и замените существующее содержимое следующим кодом.

job('jenkins-job-demo-2') {
    steps {
        shell('echo Hello World!')
    }
}

pipelineJob('github-demo') {
    definition {
        cpsScm {
            scm {
                git {
                    remote {
                        github('jenkinsci/pipeline-examples')
                    }
                }
            }
            scriptPath('declarative-examples/simple-examples/environmentInStage.groovy')
        }
    }
}

Щелкните по кнопке Сохранить, когда добавите код, чтобы сохранить изменения.

Providing DSL Script for a Pipeline

3. Нажмите “Построить сейчас” в левой боковой панели на следующем экране, чтобы повторно запустить сеанс создания. В разделе “История сборки” (внизу слева) вы увидите, что сеанс создания успешно завершился.

Нажмите на новую сборку (#2), чтобы перейти на страницу конфигурации сборки.

Rerunning the seed Job

4. Теперь перейдите к выводу консоли новой сборки. Вы увидите сообщение об добавлении элементов и название новой задачи, как показано ниже.

Этот вывод указывает на успешное добавление новой задачи в конвейер.

Verifying the New Pipeline Job was Added Successfully

5. Вернитесь на панель инструментов Jenkin, и вы увидите, что новая задача конвейера добавлена (jenkins-job-demo-2) в список задач. Нажмите на эту новую задачу конвейера, чтобы перейти на страницу конфигурации задачи.

Verifying the New Jenkins Job Exists

6. Наконец, нажмите “Построить сейчас”, чтобы запустить новую задачу конвейера. Вы увидите, что задача успешно завершилась, как указано в разделе “История сборки”.

Нажмите на стрелку вниз рядом с задачей и выберите “Вывод консоли”.

Running the New Jenkins Job

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

Viewing Console Output of the Pipeline Job

Заключение

В этом руководстве вы узнали, как создавать задачи Jenkins с помощью плагина Job DSL. Вы кратко коснулись улучшения разработки приложений путем создания конвейера CI/CD с помощью плагина Jenkins Pipeline.

Плагин Job DSL и плагин Jenkins Pipeline работают параллельно, чтобы предложить мощный способ управления заданиями Jenkins и создания конвейеров сборки. Почему бы не настроить эти плагины для создания сложных конвейеров сборки, которые автоматически запускают задания Jenkins в рамках процесса сборки?

Source:
https://adamtheautomator.com/jenkins-dsl/