Вступление
Одна из самых больших проблем, с которыми сталкиваются разработчики, - это гибкость или, другими словами, возможность своевременно выпускать стабильные выпуски продуктов. В каждом спринте нам необходимо предоставлять новые функции, функции без ошибок .
И зачем возиться со сборкой, тестированием и развертыванием вручную, если у нас может быть автоматизированный процесс? Процесс, который проверяет каждый фрагмент кода перед тем, как объединить его в стабильную ветку и затем развернуть. Например, развертывание на тестовой машине, готовой для команды QA.
Есть много инструментов для реализации этого процесса CI / CD, но мы будем придерживаться замечательного инструмента с открытым исходным кодом, Jenkins .
Jenkins - это сервер автоматизации. Это помогает автоматизировать сборку, тестирование и развертывание вашего приложения. Дженкинс поддерживает Git и Maven, которые станут нашими приглашенными звездами в этом мини-проекте.
В этой статье вы узнаете, как настроить запуск процесса Jenkins каждый раз при совершении фиксации. Затем мы убедимся, что наш репозиторий GitHub настроен правильно для этого сценария. Наконец, сделаю небольшой тест, чтобы убедиться, что все работает правильно.
Предпосылки
Чтобы вы могли следовать этому руководству, необходимо настроить некоторые мелочи.
- Сервер Jenkins. Вы можете использовать DigitalOcean для создания капли с готовым к использованию Jenkins. Это займет не более 5 минут.
- Репозиторий GitHub. Обратите внимание, что вы можете использовать поставщика услуг хостинга и управления версиями, если они предоставляют вам возможность добавлять Webhooks.
- Приложение Spring Boot с тестами. Если у вас его еще нет, вы можете клонироватьэтот репозиторий.
Настройка Jenkins
Итак, после того, как вы создали каплю Jenkins, вам нужно выполнить несколько шагов, чтобы машина заработала.
Давайте подключимся к нашей недавно созданной капле и подготовим нашу среду. Начнем с выполнения некоторых команд в терминале:
$ ssh [email protected] _VM_IP
Вам будет предложено создать свой пароль Jenkins. Используйте надежный пароль и перезапустите службу Jenkins:
$ systemctl restart jenkins
Теперь ваш сервер Jenkins доступен по следующему адресу
http://YOUR_VM_IP:8080
и вы должны увидеть что-то вроде этого. После
этого вы будете перенаправлены на страницу входа:
{.ezlazyload}
И вуаля, мы готовы!
{.ezlazyload}
Имя пользователя по умолчанию - admin
, а пароль - тот, который вы
создали в начале.
Прежде чем мы создадим наш первый проект, давайте перейдем в Manage Jenkins ~> Manage Plugins и установим GitHub Pull Request Builder .
Теперь перейдите в Управление Jenkins ~> Настроить систему и настройте сервер GitHub. Пойдем и нажмем New Item в верхнем левом углу экрана:
{.ezlazyload}
Теперь введите имя для своего нового проекта и выберите проект Freestyle :
{.ezlazyload}
Нам нужно указать некоторые параметры для проекта, чтобы Дженкинс знал, какой коммит он должен использовать для сборки и тестирования.
Первое, что нам нужно сделать, это указать URL-адрес проекта на вкладке « Общие » и проект GitHub .
На вкладке « Управление исходным кодом » выберите Git . После
ввода URL-адреса репозитория и учетных данных в разделе « Разветвленный
для сборки» используйте ${ghprbActualCommit}
.
Нажмите кнопку Advanced ... и добавьте следующие данные:
- Имя:
origin
- Refspec:
+refs/pull/${ghprbPullId}/*:refs/remotes/origin/pr/${ghprbPullId}/*
Примечание. Это значение требуется для построения только запросов на вытягивание.
{.ezlazyload}
После того, как мы настроили наш репозиторий, нам нужно указать, когда это задание будет запущено. Для этого перейдите на вкладку Build Triggers и выберите GitHub Pull Request Builder .
Во-первых, выберите учетные данные, настроенные ранее, и установите флажок Использовать хуки GitHub для запуска сборки . Теперь добавьте статус фиксации обновления во время триггера сборки и настройте его, как на изображении:
{.ezlazyload}
Добавьте триггер сообщений о состоянии сборки SUCCESS
, ERROR
и
FAILURE
.
На этапе сборки мы добавим цели Maven верхнего уровня Invoke со следующими настройками:
- Версия Maven - желаемая версия Maven, может быть настроена в Конфигурации системы.
- Цели -
clean install -U
- ПОМ -
pom.xml
Нажмите " Сохранить", и все готово!
Конфигурация репозитория GitHub
Пока нам удалось настроить рабочий процесс Jenkins, но как насчет GitHub? Вот что мы будем делать прямо сейчас.
Перейдите в Настройки на странице вашего репозитория и выберите опцию Webhooks в левом меню. Добавьте новый веб-перехватчик со следующими данными:
Для типа URL-адреса полезной нагрузки
http://YOUR_VM_IP:8080/ghprbhook/
мы выберем Pull Requests в
качестве опции запуска. Тип содержимого должен быть application/json
.
Оставьте поле Секрет пустым и нажмите Сохранить .
Тестирование рабочего процесса
Момент, которого мы ждали. Создайте новую ветку, отправьте ее на GitHub, а затем создайте запрос на слияние. Как только мы создадим Pull Request, на Jenkins будет запущено задание:
{.ezlazyload}
Вскоре на странице запроса на перенос появится ссылка " Подробности". Если вы нажмете на ссылку, вы увидите страницу, подобную этой:
{.ezlazyload}
Теперь, если мы перейдем к выходу консоли, мы увидим, что все тесты прошли:
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
...
Finished: SUCCESS
{.ezlazyload}
Ради этого урока я сделаю еще одну фиксацию с неудачным тестом, чтобы убедиться, что он работает правильно. И результат:
[ERROR] Tests run: 3, Failures: 1, Errors: 0, Skipped: 0
...
Finished: FAILURE
{.ezlazyload}
Здесь мы успешно реализовали закрытый контроль для проектов Spring Boot, используя GitHub и Jenkins.
Заключение
Ожидается, что инженеры-программисты предоставят своим клиентам решения, не содержащие ошибок. При сложной логике первостепенное значение приобретает тестирование программного обеспечения и обеспечение проверок и тестовых примеров, чтобы убедиться, что проект стабилен.
В этой статье мы реализовали закрытый контроль для проектов Spring Boot, используя GitHub и Jenkins, чтобы гарантировать прохождение проверок в коде, который мы отправляем.