Предпосылки
Установить Дженкинс
Что такое общая библиотека?
Общая библиотека в Jenkins — это повторно используемая коллекция скриптов Groovy, которая может использоваться несколькими заданиями Jenkins. Это позволяет вам совместно использовать код и функции между различными заданиями, что может сделать ваши сборки более эффективными и простыми в обслуживании.
Чтобы понять концепцию разделяемых библиотек, давайте рассмотрим пример в реальном времени. Представьте, что у вас есть несколько конвейеров Jenkins, которым требуется общий набор функций для взаимодействия с системой контроля версий, такой как Git. Вместо дублирования кода, связанного с Git, в каждом конвейере вы можете создать общую библиотеку, которая инкапсулирует необходимые операции Git.
Структура папок общей библиотеки
- Каталог
src
структурирован как стандартный проект Java. Это означает, что вы можете использовать операторimport
для импорта классов из других каталогов в каталогsrc
. - Каталог
vars
— это специальный каталог, содержащий глобальные переменные, определенные в общей библиотеке. Доступ к этим переменным можно получить из любого задания Jenkins, которое импортирует общую библиотеку. - Каталог
resources
— это обычный каталог, который может содержать файлы любого типа. Однако обычно он используется для хранения статических ресурсов, используемых общей библиотекой.
Шаги по настройке общей библиотеки в Jenkins
Создайте репозиторий в любом инструменте управления исходным кодом.
Здесь мы используем GitHub.
Клонируйте только что созданный репозиторий
git clone https://github.com/tejashreeSalvi/shared-lib.git
Создайте структуру папок
cd shared-lib # create a master branch (optional) git branch master git checkout master # create vars directory mkdir vars cd vars
Мы создали каталог vars
, в котором мы собираемся написать нашу повторно используемую функцию.
Рассмотрим пример реального времени. Представьте, что у вас есть несколько конвейеров Jenkins, которым требуется общий набор функций для взаимодействия с системой контроля версий, такой как Git. Вместо дублирования кода, связанного с Git, в каждом конвейере вы можете создать общую библиотеку, которая инкапсулирует необходимые операции Git.
Создание вашей первой общей библиотеки для проверки scm.
checkoutCode.groovy
def call(String repoUrl, String branch){ def workingDir = "${env.WORKSPACE}" sh "git clone ${repoUrl} ${workingDir}" sh "git checkout ${branch}" return workingDir }
- Метод
call
— это специальный метод в общей библиотеке Jenkins, который позволяет вызывать функцию напрямую из конвейера Jenkins. ${env.WORKSPACE}
назначает переменную среды JenkinsWORKSPACE
sh
используется для выполнения команды оболочки для клонирования репозитория вworkingDir
и извлечения (переключения) на указанныйbranch
.- путь
workingDir
возвращается в Jenkins Pipeline.
Эту часть функциональности можно повторно использовать в конвейерах Jenkins, которые импортируют и используют общую библиотеку.
Зафиксируйте свои изменения в репозитории Git.
git add . git commit -m "checkout scm fucntionality added" git push origin master
Код успешно отправлен и доступен в удаленном репозитории.
Настройте глобальные конвейерные библиотеки (общая библиотека) в Jenkins.
Войдите в Дженкинс.
Go to Manage Jenkins
→ Configure System
Следующий шаг. Найдите Global Pipeline Libraries
и настройте параметры.
- Введите имя общей библиотеки:
shared-lib
- Установите ветку по умолчанию:
master
(Jenkins будет рассматривать ветку по умолчанию, если при импорте общей библиотеки не указана ветка).
3. Настройте созданный нами репозиторий для Shared Library: https://github.com/tejashreeSalvi/shared-lib.git
4. Настройте учетные данные, если ваш репозиторий частный
5. Нажмите Save
Ух ты! мы закончили с частью конфигурации.
Давайте использовать разделяемую библиотеку в пайплайнах
Чтобы импортировать библиотеку, мы используем аннотацию
@Library
и указываем имя библиотеки, определенное в глобальной конфигурации Jenkins.
Создайте конвейер Дженкинса
Перейдите к New Item
и дайте подходящее имя конвейера first-shared-lib-pipeline
и введите pipeline
Нажмите на OK
Скрипт для импорта общей библиотеки
Перейдите к Pipeline Script
→ Добавить сценарий и Save
@Library("shared-lib@master") _ pipeline { agent any stages { stage('Code Checkout') { steps { script { def workingDir = checkoutCode("https://github.com/tejashreeSalvi/django-todo-cicd.git", "develop") echo $workingDir } } } } }
@Library("shared-lib@master") _
: это будет импортировать разделяемую библиотеку с именем «shared-lib» в ветку «master». Библиотека доступна для использования в этом конвейере Jenkins.
2. def workingDir = checkoutCode("https://github.com/tejashreeSalvi/django-todo-cicd.git", "develop")
: эта строка вызывает функцию checkoutCode
из общей библиотеки, передавая URL-адрес репозитория и имя ветки.
Следовательно, вы можете создать несколько конвейеров и использовать функцию checkoutCode
из общей библиотеки для проверки scm. Вместо того, чтобы снова и снова писать блок кода во всех пайплайнах Jenkins.
Постройте трубопровод.
Перейдите к first-shared-lib-pipeline
→ Нажмите Build Now
Сборка будет запущена. Проверьте консольный вывод сборки.
Если вы внимательно посмотрите, то обнаружите, что общая библиотека успешно загружена.
Используя общую библиотеку и вызывая функцию checkoutCode
, этот сценарий конвейера выполняет операцию проверки кода, клонируя указанный репозиторий и переключаясь на ветвь develop
.
Ура! Мы создали наш первый повторно используемый код, используя Shared Library.
Когда использовать и когда не использовать общую библиотеку.
Вот и все! Мы изучили основы общей библиотеки. Надеюсь, вы будете использовать его в своем следующем проекте.