Jenkins CI позволяет разработчикам автоматизировать создание, тестирование и развёртывание кода. Jenkins Jobs фокусируется на непрерывном создании и тестировании кода, чтобы любые внесённые изменения легко интегрировались в сборку. В этой статье мы посмотрим на Jenkins в действии — разберём, как создавать и настраивать Jenkins Jobs. 

Что такое Jenkins Jobs 

Jenkins Jobs — это набор задач, которые выполняются последовательно, как определено пользователем. Любая автоматизация, реализованная в Jenkins, — это Jenkins Job. Эти джобы являются важной частью процесса сборки. Мы можем создавать их для тестирования нашего приложения или проекта.

При работе с Jenkins термины «Jenkins Job» и «Jenkins Project» являются синонимами. С помощью Jenkins Job мы можем клонировать исходный код из системы управления версиями, компилировать код и запускать модульные тесты в соответствии с требованиями. Кроме того, Jenkins позволяет объединять код с помощью инструментов управления — Superversion, CVS, CVN и др.

Существуют разные типы Jenkins Jobs под разные цели. Исходя из сложности и характера проекта, мы можем выбрать те, что лучше всего соответствуют нашим потребностям. Кратко рассмотрим типы джоб в Jenkins:

Название

Описание

Freestyle Project

Центральная и наиболее широко используемая функция в Jenkins. С её помощью можно легко создавать и запускать пайплайны или скрипты.

Maven Project

Подойдёт, если работа связана с управлением и созданием проектов, содержащих POM-файлы. При выборе этой опции Jenkins, по умолчанию, выберет POM-файлы, создаст конфигурации и запустит сборки.

Pipeline

Подходит для работы с длительными действиями, содержащими несколько агентов сборки.

Multi-configuration Project

Используется в тех условиях, когда требуются различные конфигурации. Параметр позволяет создавать несколько конфигураций для тестирования в нескольких средах.

GitHub Organization

Параметр сканирует учётную запись пользователя на GitHub на наличие всех репозиториев, соответствующих определённым маркерам.

Подробнее о Jenkins Freestyle Project

Jenkins поддерживает разные способы создания джоб. Наиболее часто используемыми считаются Freestyle и Maven 2/3. Ключевое преимущество Jenkins Freestyle Project заключается в том, что он позволяет настраивать практически любую джобу. Maven 2/3 понимает структуру проекта Maven и позволяет быстро настраивать задания с дополнительными функциями.

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

Другие плагины Jenkins также позволяют использовать дополнительные типы шагов сборки. К ним относятся Grails, Gant, Rake, Gradle, Ruby, MSBuild и др. Но Jenkins Freestyle Project отличает то, что он позволяет создавать джобы общего назначения с максимальной гибкостью. Суть в том, что JenkinsFreestyle Project позволяет настроить практически любое задание сборки.

Существуют ограничения на типы действий, которые мы можем выполнять на этапе сборки или после сборки. В рамках Jenkins Freestyle Project доступно несколько стандартных подключаемых модулей, которые помогаютт преодолеть проблему. Эти подключаемые модули позволяют настраивать триггеры сборки и обеспечивают безопасность проекта Jenkins.

Когда использовать Jenkins Freestyle Project

В freestyle project средах удобно создать скрипт, который предписывает Jenkins freestyle job передать файл по FTP с одного сервера на другой, скомпилировать каталог Java-кода или даже запустить тест SonarQube. Jenkins freestyle job может быть таким же мощным и сложным, как и любое задание сборки, созданное с помощью пайплайна Jenkins или Groovy DSL. Единственный недостаток freestyle project заключается в том, что пользователь должен знать, как заскриптовать все эти действия, а разработчикам нужно научиться управлять этими скриптами.

Плагины вроде Git, Maven и SonarQube являются предпочтительными для доступа к ресурсам. И технически каждый разработчик может написать скрипт для доступа к этим ресурсам в рамках Jenkins Freestyle Project. Тем не менее, рекомендуется, чтобы каждый разработчик в команде следовал рекомендациям по обеспечению безопасности и воздерживался от адаптации подхода, основанного на скриптах. 

Как создать Freestyle Build Job

Шаг 1. Войдите в учётную запись Jenkins. После этого нажмите на кнопку «New Item» в панели управления.

После этого вы будете перенаправлены на новую страницу, где нужно ввести название джобы и выбрать тип.

Шаг 2: Введите название элемента. Для примера возьмём «Привет, мир». И выберите «Freestyle project». Нажмите кнопку ОК.

Когда вы нажмёте «Ок», Jenkins автоматически переведёт вас в конфигурации, где нужно настроить сведения о проекте. Кроме того, вы можете предоставить сложные детали через параметры вкладки.

Первая вкладка — общие сведения о проекте. 

Шаг 3. Введите сведения о проекте на вкладке «General».

Помимо описания (Description), в разделе «General» есть некоторые опции.

Название

Описание

Discard old builds

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

GitHub Project

Указывает, что вы запускаете сборку с GitHub. 

This project is parameterized

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

Throttle builds

Обеспечивает минимальное время между сборками на основе желаемой максимальной скорости.

Disable this project

Если вы отметите этот параметр, новая сборка проекта выполняться не будет

Execute concurrent builds if necessary

Если вы отметите этот параметр, сможете выполнять несколько сборок проекта параллельно.

Далее разберёмся, что делает вкладка «Source Code Management». Она проверяет код с узлов управления версиями — если ваш код размещён на GitHub или в любых других репозиториях, вы должны добавить сведения о репозитории. Jenkins клонирует репозиторий.

Синие значки вопросительного знака в правой нижней части — быстрые советы. Они могут быть очень полезными и своевременно давать разъяснения. 

Шаг 4. На вкладке «Source Code Management» (SCM) выберите Git в качестве источника репозитория и введите URL вашего репозитория Git. В случае, если репозиторий создан локально, допускается использование локального репозитория.

А теперь предположим, репозиторий GitHub, который вы используете, является закрытым. В этом случае Jenkins проверит учётные данные для входа в систему с помощью GitHub, и после успешной проверки извлечёт исходный код из вашего репозитория GitHub.

Следующая  — работа с кодом. Вы можете управлять настройками в разделе «Build», чтобы создать код в нужное вам время. Вы даже можете запланировать периодический запуск сборки, если это необходимо.

Шаг 5. Перейдите в раздел «Build» и нажмите на «Add build step».

И здесь есть разные варианты:

Название

Описание

Execute Windows batch command

Запускает пакетный сценарий Windows для сборки проекта. Сценарий запускается с рабочей областью в качестве текущего каталога.

Execute shell

Запускает сценарий оболочки для сборки проекта. Сценарий запускается с рабочей областью в качестве текущего каталога.

Invoke Ant

Указывает список вызываемых целей Ant

Invoke Gradle Script

Предназначен для проектов, которые используют Gradle в качестве системы сборки. Здесь Jenkins вызывает Gradle с заданными переключателями и задачами.

Invoke top-level Maven targets

Предназначен для проектов, которые используют Maven в качестве системы сборки. Это приводит к тому, что Jenkins вызывает Maven с заданными целями и параметрами. Jenkinsпередаёт Maven различные переменные среды, к которым вы можете получить доступ из Maven как ${env. VARIABLE NAME}.

Run with timeout

Если сборка не завершается за указанное время, она автоматически завершается и помечается как прерванная. Время по умолчанию будет не менее 3 минут.

Нажмите «Execute Windows batch command» и добавьте команды, которые вы хотите выполнить в процессе сборки.

Например, пакетные команды компиляции Java:

Шаг 6. Когда введёте все данные, нажмите кнопку «Apply» и сохраните проект. 

Шаг 7. На левой боковой панели нажмите кнопку «Build Now», чтобы создать исходный код.

Шаг 8. Вы можете проверить историю выполненной сборки в разделе «Build History», щёлкнув по номеру сборки. Нажав на Build Number –> Console Output, вы должны получить сообщение об успешном выполнении или сбое в зависимости от того, как было выполнено задание.

Итог

Итак, что мы сделали? Мы запустили программу «HelloWorld» на GitHub. Jenkins загрузил исходный код из удалённого репозитория и непрерывно создавал его с заданной вами частотой.

Подписка на курсы Слёрма на 3 месяца

Что такое подписка

Подписка — это концентрированное обучение с курсами, которые выбираете именно вы. Если хочется одновременно обучиться на Jenkins и DevOps Tools — подписка станет вашим лучшим другом.

Подписка действует 3 месяца и позволяет пройти неограниченное количество курсов из этого списка.

Комментарии (1)


  1. vad_cherenev
    21.06.2023 13:02
    +1

    Спасибо за туториал. Как раз хотел jenkins развернуть для детального изучения, и в качестве сборщика java.