Найти тему
Java убежище

Как я Jenkins с Bitbucket'ом дружил

История началась с того, что нам в проекте понадобился анализ кода. Рассмотрев SonarQube выяснилось, что оно слишком дорого, поэтому с моей стороны было предложение использовать плагин для гредла CheckStyle для генерации репортов анализа кода. После n-ого количества проб и ошибок, я пришел к связке Jenkins-Bitbucket-CheckStyle.

Я понимал что можно сделать декоратор PR для битбакета с помощью этих инструментов и приступил к выполнению. С самого начала столкнулся с проблемой когда Jenkins просто на отрез отказывался ставить любые плагины, решилась эта проблема, только спустя время, причем сама.

Установив плагин "BitBucket" я начал дружить Jenkins и BitBucket через веб хуки.

После установки плагина "BitBucket" я настроил интеграцию Jenkins и Bitbucket через вебхуки. Затем настало время написать pipeline для запуска Gradle задачи в Jenkins.

-2

Шаги реализации
1. Настройка Jenkins
Первым шагом была настройка Jenkins для работы с нашим репозиторием в Bitbucket. Это включало:

  • Настройку Jenkins Pipeline для выполнения шагов проверки кода.
  • Конфигурацию учетных данных для доступа к Bitbucket.
  • Настройку параметров окружения, таких как URL сервера Bitbucket, токен доступа, проект и репозиторий.


2. Клонирование репозитория
Я настроил Jenkins для автоматического клонирования репозитория из Bitbucket при каждом запуске Pipeline. Это потребовало использования корректных учетных данных для аутентификации и настройки ветки, которую нужно проверять.

3. Интеграция Checkstyle
CheckStyle был выбран в качестве инструмента статического анализа кода. Я настроил Jenkins для выполнения CheckStyle и генерации отчета, содержащего информацию о нарушениях стилевых требований в коде. Этот отчет включал детали, такие как файл и строка кода, где было обнаружено нарушение.

4. Парсинг результатов Checkstyle
Я разработал механизм для обработки результатов CheckStyle. Цель заключалась в том, чтобы извлечь строки кода, измененные в pull request, и сравнить их с результатами анализа CheckStyle. Это позволило определить, какие из найденных нарушений относятся к новым или измененным строкам кода. Отчет сохранялся в формате XML для удобного парсинга в будущем.

5. Автоматическое комментирование в Bitbucket
На основании результатов анализа CheckStyle я настроил Jenkins для автоматического добавления комментариев в pull request в Bitbucket. Эти комментарии содержали информацию о нарушениях стилевых требований и помогали разработчикам быстро идентифицировать и исправлять проблемы.

-3

Процесс работы

Механизм работы выглядит следующим образом:

  1. Открывается PR, через SCM Jenkins обрабатывается вебхук и фетчатся изменения, забирается последний открытый PR.
  2. Выполняется checkout на коммит и запускается CheckStyle.
  3. Параметры запуска CheckStyle были настроены вручную для обработки изменений в пределах PR (по умолчанию сканируется весь проект).
  4. После анализа в workspace Jenkins появляются отчеты. Формат XML был выбран для упрощения парсинга.
  5. Jenkins проводит анализ и отправляет curl-запросы в Bitbucket на каждую ошибку.

Если CheckStyle находит ошибку, проверяется, была ли она сделана в этом PR. Если да, то отправляется комментарий к строке с текстом ошибки.

Результаты

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