Интеграция Jenkins с системой контроля версий (Git)

JenkinsBeginner
Практиковаться сейчас

Введение

Добро пожаловать в лабораторную работу по интеграции Jenkins с Git. Управление исходным кодом (SCM) является краеугольным камнем современной разработки программного обеспечения. Интеграция вашего сервера непрерывной интеграции (CI), такого как Jenkins, с системой SCM, например Git, — это фундаментальный шаг в автоматизации процессов сборки и тестирования.

В этой лабораторной работе вы научитесь:

  • Проверять наличие плагина Git в Jenkins.
  • Создавать проект типа Freestyle, связанный с локальным Git-репозиторием.
  • Добавлять этап сборки для выполнения скрипта из репозитория.
  • Запускать сборку вручную для проверки конфигурации.
  • Настраивать опрос SCM (SCM polling) для автоматического запуска сборок при появлении новых коммитов.

Экземпляр Jenkins и небольшой локальный Git-репозиторий уже подготовлены для этой работы. Вы можете получить доступ к веб-интерфейсу Jenkins, открыв браузер Firefox на рабочем столе. Браузер автоматически откроется по адресу http://localhost:8080, поэтому вам не нужно вводить URL вручную. Вход в систему не требуется.

Проверка плагина Git

Jenkins использует плагины для добавления интеграций. Плагин Git предоставляет опцию Git, которую вы будете использовать при настройке задания.

  1. Откройте браузер Firefox из интерфейса рабочего стола. Браузер автоматически откроется по адресу http://localhost:8080. Вход в систему не требуется.
  2. На панели управления Jenkins нажмите на значок шестеренки в правом верхнем углу, чтобы открыть Manage Jenkins (Управление Jenkins).
  3. Нажмите Plugins (Плагины).
  4. Перейдите на вкладку Installed plugins (Установленные плагины).
  5. В поле фильтра введите git.
  6. Убедитесь, что Git отображается в списке установленных плагинов.

Установленный плагин Git

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

Создание проекта и настройка Git SCM

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

  1. Вернитесь на главную панель управления Jenkins, нажав ссылку Dashboard в навигационной цепочке в левом верхнем углу.
  2. Нажмите New Item (Создать задание) на боковой панели слева.
  3. Введите git-integration-project в качестве имени элемента.
  4. Выберите Freestyle project.
  5. Нажмите OK.

Вы перейдете на страницу настройки проекта.

  1. Прокрутите страницу вниз до раздела Source Code Management (Управление исходным кодом).
  2. Выберите опцию Git. Если вы не видите эту опцию, пожалуйста, убедитесь, что плагин Git был правильно установлен на предыдущем шаге.
  3. В поле Repository URL введите URL локального репозитория, подготовленного для этой лабораторной работы:
git://localhost/git-playground.git
  1. Оставьте Branch Specifier со значением по умолчанию */master. Это указывает Jenkins использовать ветку master.
  2. Нажмите кнопку Save (Сохранить) в нижней части страницы.

Конфигурация Git SCM

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

Добавление этапа сборки и ручной запуск

Теперь, когда Jenkins знает, где взять код, нужно указать, что с ним делать. Вы добавите этап сборки с командами оболочки (shell), а затем запустите сборку вручную для проверки.

  1. На странице проекта git-integration-project нажмите Configure (Настроить) на боковой панели слева.
  2. Прокрутите вниз до раздела Build Steps (Этапы сборки).
  3. Нажмите раскрывающийся список Add build step (Добавить этап сборки) и выберите Execute shell (Выполнить shell).
  4. В текстовой области Command введите следующие команды сборки:
echo "Building from the Git repository"
./build.sh

Когда задание будет запущено, Jenkins сначала клонирует Git-репозиторий в свою рабочую область, а затем выполнит эти команды внутри этой области. Скрипт build.sh находится в репозитории, поэтому успешное выполнение доказывает, что Jenkins успешно выгрузил код перед выполнением этапа shell.

  1. Нажмите Save.
  2. Вы вернетесь на страницу проекта. Нажмите Build Now (Собрать сейчас) на боковой панели слева, чтобы начать сборку.

Новая сборка появится в панели Build History (История сборок). Дождитесь завершения (значок статуса станет синим, если сборка прошла успешно).

  1. Нажмите на номер сборки (например, #1).
  2. Нажмите Console Output (Вывод консоли) в меню сборки.

Успешная сборка Git

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

Started by user admin
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/git-integration-project
...
[git-integration-project] $ /bin/sh -xe /tmp/jenkins123.sh
+ echo Building from the Git repository
Building from the Git repository
+ ./build.sh
Repository build script running
Workspace: /var/jenkins_home/workspace/git-integration-project
README.md
build.sh
Finished: SUCCESS

Включение автоматической сборки с помощью опроса SCM

Ручной запуск сборок полезен для тестирования, но настоящая сила CI заключается в автоматизации. На этом шаге вы настроите Jenkins на опрос Git-репозитория на предмет изменений.

  1. Вернитесь на страницу конфигурации git-integration-project (Страница проекта > Configure).
  2. Прокрутите вниз до раздела Build Triggers (Триггеры сборки).
  3. Установите флажок рядом с Poll SCM (Опрос SCM).
  4. Появится текстовое поле Schedule (Расписание). Оно использует синтаксис cron для определения того, как часто Jenkins должен проверять репозиторий на наличие изменений. Чтобы опрашивать каждую минуту, введите следующее:
* * * * *
  1. Нажмите Save.

Расписание сохраняется вместе с конфигурацией задания. Теперь Jenkins будет проверять настроенный репозиторий раз в минуту и запускать новую сборку при обнаружении нового коммита.

  1. Вернитесь в интерфейс Jenkins и перейдите на страницу git-integration-project.
  2. На боковой панели слева вы увидите новую опцию Git Polling Log (Журнал опроса Git). Нажмите на нее.
  3. На этой странице отображается активность опроса после того, как Jenkins выполнит хотя бы один цикл. Для появления первой записи может потребоваться до одной минуты. Вы должны увидеть записи, подобные этим:
Started on ...
Using strategy: Default
[poll] Last Built Revision: Revision ...
The recommended git tool is: NONE
No credentials specified
 > git --version ## timeout=10
 > git ls-remote -h -- git://localhost/git-playground.git ## timeout=10
...
No changes

Конфигурация опроса SCM

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

Резюме

В этой лабораторной работе вы получили практический опыт работы с одной из важнейших интеграций в CI-конвейере: подключением Jenkins к Git-репозиторию для контроля версий.

Вы успешно:

  • Проверили наличие необходимого плагина Git, обеспечивающего возможности интеграции Jenkins с Git.
  • Создали проект Freestyle и настроили его на выгрузку кода из Git-репозитория.
  • Определили этап сборки для выполнения shell-скрипта из полученного кода.
  • Проверили настройку путем запуска сборки вручную.
  • Настроили автоматический триггер сборки с помощью Poll SCM, что позволяет Jenkins автоматически обнаруживать и собирать новые коммиты.

Эти навыки являются фундаментальными для автоматизации рабочего процесса разработки и представляют собой первый шаг к созданию надежного и эффективного CI/CD конвейера с использованием Jenkins.