Предпосылки

Установить Дженкинс



Что такое общая библиотека?

Общая библиотека в Jenkins — это повторно используемая коллекция скриптов Groovy, которая может использоваться несколькими заданиями Jenkins. Это позволяет вам совместно использовать код и функции между различными заданиями, что может сделать ваши сборки более эффективными и простыми в обслуживании.

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

Структура папок общей библиотеки

  1. Каталог src структурирован как стандартный проект Java. Это означает, что вы можете использовать оператор import для импорта классов из других каталогов в каталог src.
  2. Каталог vars — это специальный каталог, содержащий глобальные переменные, определенные в общей библиотеке. Доступ к этим переменным можно получить из любого задания Jenkins, которое импортирует общую библиотеку.
  3. Каталог 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
}
  1. Метод call — это специальный метод в общей библиотеке Jenkins, который позволяет вызывать функцию напрямую из конвейера Jenkins.
  2. ${env.WORKSPACE} назначает переменную среды Jenkins WORKSPACE
  3. sh используется для выполнения команды оболочки для клонирования репозитория в workingDir и извлечения (переключения) на указанный branch .
  4. путь workingDir возвращается в Jenkins Pipeline.

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

Зафиксируйте свои изменения в репозитории Git.

git add .
git commit -m "checkout scm fucntionality added"
git push origin master

Код успешно отправлен и доступен в удаленном репозитории.

Настройте глобальные конвейерные библиотеки (общая библиотека) в Jenkins.

Войдите в Дженкинс.

Go to Manage JenkinsConfigure System

Следующий шаг. Найдите Global Pipeline Libraries и настройте параметры.

  1. Введите имя общей библиотеки: shared-lib
  2. Установите ветку по умолчанию: 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
                }
            }
        }
    }
}
  1. @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.

Когда использовать и когда не использовать общую библиотеку.

Вот и все! Мы изучили основы общей библиотеки. Надеюсь, вы будете использовать его в своем следующем проекте.

Добавьте хлопков, если вам понравилась статья 👏

Подпишитесь на другие подобные материалы ❤

Свяжитесь со мной в LinkedIn.