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 месяца и позволяет пройти неограниченное количество курсов из этого списка.
vad_cherenev
Спасибо за туториал. Как раз хотел jenkins развернуть для детального изучения, и в качестве сборщика java.