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

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

Введение

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

В этой лабораторной работе вы узнаете, как:

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

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

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

Jenkins поставляется со встроенной интеграцией Git. Плагин Git уже установлен по умолчанию, что позволяет Jenkins взаимодействовать с репозиториями Git. Давайте проверим доступность плагина Git.

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

Jenkins installed plugins page

После подтверждения доступности плагина Git вы можете перейти к следующему шагу — созданию проекта, использующего Git.

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

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

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

Это перенаправит вас на страницу конфигурации проекта.

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

Раздел управления исходным кодом в конфигурации проекта

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

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

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

  1. На странице проекта git-integration-project нажмите Configure (Настроить) в боковой панели слева.
  2. Прокрутите вниз до раздела Build Steps (Шаги сборки).
  3. Нажмите выпадающее меню Add build step (Добавить шаг сборки) и выберите Execute shell (Выполнить оболочку).
  4. В текстовой области Command (Команда) введите следующие команды сборки:
echo "Building the project..."
date
echo "Listing files in workspace:"
ls -la
echo "Build complete!"

Когда задача будет запущена, Jenkins сначала клонирует репозиторий Git в свое рабочее пространство, а затем выполнит эти команды из этого рабочего пространства.

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

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

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

История сборок

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

Started by user admin
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/git-integration-project
 > git rev-parse --resolve-git-dir /var/jenkins_home/workspace/git-integration-project/.git ## timeout=10
...
[git-integration-project] $ /bin/sh -xe /tmp/jenkins123.sh
+ echo Building the project...
Building the project...
+ date
Mon Jan 1 12:01:00 UTC 2024
+ echo Listing files in workspace:
Listing files in workspace:
+ ls -la
total 24
drwxr-xr-x 3 jenkins jenkins 4096 Aug 21 10:33 .
drwxr-xr-x 3 jenkins jenkins 4096 Aug 21 10:33 ..
drwxr-xr-x 8 jenkins jenkins 4096 Aug 21 10:33 .git
-rw-r--r-- 1 jenkins jenkins   32 Aug 21 10:33 README.md
-rw-r--r-- 1 jenkins jenkins   15 Aug 21 10:33 file1.txt
-rw-r--r-- 1 jenkins jenkins   15 Aug 21 10:33 file2.txt
+ echo Build complete!
Build complete!
Finished: SUCCESS

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

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

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

Поскольку мы используем удаленный репозиторий GitHub (https://github.com/labex-labs/git-playground), мы не можем напрямую его изменить для тестирования триггера опроса. Однако вы можете наблюдать, как работает опрос SCM:

  1. Вернитесь в интерфейс Jenkins и перейдите на страницу git-integration-project.
  2. В левой боковой панели вы увидите новую опцию под названием Git Polling Log (Журнал опроса Git). Нажмите на нее.
  3. Эта страница показывает активность опроса. Вы должны увидеть записи, подобные следующим:
Started on Aug 21, 2025, 10:36:00 AM
Using strategy: Default
[poll] Last Built Revision: Revision d22f46ba8c2d4e07d773c5126e9c803933eb5898 (refs/remotes/origin/master)
The recommended git tool is: NONE
No credentials specified
 > git --version ## timeout=10
 > git --version ## 'git version 2.30.2'
 > git ls-remote -h -- https://github.com/labex-labs/git-playground ## timeout=10
Found 3 remote heads on https://github.com/labex-labs/git-playground
[poll] Latest remote head revision on refs/heads/master is: d22f46ba8c2d4e07d773c5126e9c803933eb5898 - already built by 1
Done. Took 0.36 sec
No changes

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

  1. Вы также можете вручную запустить еще одну сборку, нажав Build Now (Собрать сейчас), чтобы увидеть, как система опроса интегрируется с ручными сборками.

Резюме

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

Вы успешно:

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

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