Этот учебник о непрерывной интеграции между GitLab, Jenkins и SonarQube. В конце этого руководства вы сможете просматривать отчеты о качестве кодов репозитория GitLab на SonarQube, используя Jenkins в качестве Continuous Integrator и sonar-scanner в качестве анализатора кода.
Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube
Прежде чем мы увидим, как настроить непрерывную интеграцию (CI), давайте сначала посмотрим на вовлеченные компоненты и какую роль они играют в нашей установке здесь.
GitLab
GitLab — это платформа с открытым исходным кодом для совместной работы и контроля версий. Он может быть установлен на ваших серверах для частного размещения ваших кодов. GitLab предоставляет функции управления исходным кодом (SCM), аналогичные GitHub и BitBucket.
Jenkins
Jenkins — это сервер непрерывной интеграции с открытым исходным кодом. Это инструмент автоматизации, который можно использовать для тестирования и компиляции ваших кодов, а также для развертывания его в рабочей среде, если сборка прошла успешно.
Jenkins здесь используется для извлечения кодов из GitLab (в режиме реального времени, когда код перемещается или объединяется), построения кодов проекта и передачи результата в SonarQube для визуальной интерпретации.
SonarQube
SonarQube — это сервер Continuous Inspection с открытым исходным кодом. Это инструмент, используемый в качестве контроля качества для проверки кода. Он предоставляет автоматические отчеты об анализе кодов, обнаруживает ошибки, уязвимости безопасности, дублированные коды, комментарии, запахи кода и многое другое для различных языков программирования.
Предпосылки
В этой статье предполагается, что GitLab, Jenkins и SonarQube уже установлены в вашей системе Linux. Установка этих инструментов не является нашей целью здесь.
Теперь, когда вы знаете используемые инструменты и их роли, давайте посмотрим, как настроить нашу непрерывную интеграцию.
Шаг 1. Конфигурации в Sonarqube
Нам необходим токен аутентификации сервера от SonarQube, который мы позже передадим Jenkins. Этот токен предоставляет доступ к Jenkins для запуска сборок Jenkins в SonarQube для анализа кода.
- Зайдите в Мой аккаунт > Безопасность
- В блоке Tokens введите любой текст для создания токена.
- Сохраните копию токена
Вот обзор SonarQube, генерирующий токен пользователя:
Теперь мы создадим проект, в котором будут опубликованы все отчеты анализа кода.
- Перейдите в Администрирование > Проекты > Управление
- Нажмите на Создать проект
- Создайте проект с вашими Project_name и Project_key. Скопируйте название проекта и ключ. Мы передадим эти учетные данные в конфигурации Jenkins позже.
Предварительный просмотр создания проекта:
Шаг 2. Настройка на GitLab
Нам также нужны токены доступа пользователя GitLab, которые мы позже передадим в Jenkins. Это используется для аутентификации URL репозитория пользователя GitLab, откуда Дженкинс извлекает коды.
- Перейти к Настройки пользователя в меню Параметры формы.
- Перейти к токенам доступа
- Создайте личный токен доступа, добавив любое уникальное имя ( Name ) и дату истечения срока действия токена (Expires at). Также установите Scopes на api.
Предварительный просмотр создания токенов доступа пользователя:
Шаг 3. Настройка в Jenkins
Нам нужно настроить GitLab и SonarQube на веб-панели Jenkins. Для этого нам нужно установить некоторые необходимые плагины.
- Войти в Jenkins
- Перейти к управлению Jenkins > Управление плагинами
- На вкладке Доступно найдите GitLab и SonarQube и установите следующие плагины:
- GitLab Hook Plugin
- GitLab Plugin
- Гит
- SonarQube сканер для Jenkins
Мы требуем, чтобы сканер SonarQube был установлен на «сервере Jenkins», который фактически запускает анализ кода и публикует отчеты для проекта на SonarQube.
Чтобы установить SonarQube Scanner, вы можете использовать следующие команды:
$ wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip $ unzip sonar-scanner-cli-3.3.0.1492-linux.zip $ cd sonar-scanner-3.3.0.1492-linux $ pwd
Скопируйте местоположение. Нам нужно будет добавить это местоположение (как домашнюю папку установки сканера SonarQube) в конфигурации Jenkins.
Мы также настроим файл свойств sonar-scanner при добавлении сервера SonarQube:
$ cd conf $ vi sonar-scanner.properties
Раскомментируйте «sonar.host.url» и добавьте URL вашего сервера SonarQube
Теперь мы настроим GitLab и SonarQube в Jenkins.
- Перейдите в Управление Jenkins > Настроить систему
- На вкладке Серверы SonarQube введите URL-адрес вашего сервера SonarQube и токен аутентификации Сервера, сгенерированный ранее в SonarQube.
Предварительный просмотр добавления SonarQube в Jenkins:
Теперь перейдите на вкладку GitLab и добавьте URL своего сервера GitLab на URL хоста GitLab.
В Credentials нам нужен токен GitLab API для доступа к GitLab. Нажмите Добавить и выберите Jenkins: поставщик учетных данных Jenkins.

В Kind выберите GitLab API Token из выпадающего списка. Введите свой токен API, сгенерированный на GitLab ранее. Добавьте токен с уникальным идентификатором.

Кроме того, убедитесь, что у вас есть правильное расположение Jenkins на вкладке Jenkins Location.

После успешного добавления GitLab и SonarQube нам также необходимо добавить конфигурации сканера SonarQube.
- Перейдите в Управление Jenkins > Глобальная конфигурация инструмента
- На вкладке «SonarQube Scanner» выберите «Установка сканера SonarQube».
- Снимите флажок «Install automatically» и добавьте домашнюю папку установки SonarQube.
Шаг 4. Добавление проекта в Jenkins для непрерывной интеграции и непрерывной проверки.
После того, как все настройки выполнены, мы создадим проект на Jenkins.
Перейдите на панель инструментов Jenkins -> Новый элемент > Выберите проект в стиле фристайл . Создать проект с уникальным именем проекта
На Jenkins Dashboard выберите свой проект и нажмите «Настроить».
Прокрутите до вкладки Общие, выберите Соединение GitLab из выпадающего списка. Вы увидите имя подключения GitLab, которое мы добавили ранее, в разделе «Управление Jenkins > Настройка системы».
Выделите вкладку «Управление исходным кодом», выберите «Git» . Добавьте URL-адрес вашего проекта GitLab (используется тот же синтаксис, что и у команды git clone). Вы можете получить URL на своей странице проекта GitLab.
Также укажите аутентификацию для GitLab URL.
- В разделе Crendentials нажмите кнопку Добавить и выберите Jenkins: поставщик учетных данных Jenkins.
- в Виде , выберите имя пользователя с паролем из выпадающего списка.
- Введите имя пользователя и пароль для входа в GitLab.
- Добавьте ключ с уникальным идентификатором.
Вам также необходимо указать ветви для сборки. Если оставить это поле пустым, все ветви будут проверены на наличие изменений и построены.
Добавление веток может быть сделано так: */<branch_name>

Теперь перейдите к «Построить триггеры» и установите флажок «URL-адрес веб-крючка GitLab».
- Скопируйте URL-адрес веб-крючка GitLab. Нам нужно снова настроить webhook на GitLab, используя этот URL.
- Нажмите на Расширенный
- Создайте как секретный токен. Скопируйте этот токен, он используется для настройки webhook на GitLab позже.
Предварительный просмотр создания триггеров сборки
Наконец, перейдите на вкладку «Сборка» и в разделе «Выполнить сканер SonarQube» добавьте параметры конфигурации SonarQube, которые используются сканером SonarQube. Это может быть имя проекта SonarQube, ProjectKey, место установки сканера SonarQube и т. д.
После того, как все настройки выполнены, нам нужно наконец настроить webhook на GitLab.
Webhook — это метод передачи данных в другие приложения в режиме реального времени.
Мы используем webhook в GitLab для автоматизации доставки кодов GitLab во время событий push или событий слияния, как указано.
- Войдите в свою учетную запись Gilab.
- GOTO Ваши проекты в Project меню.
- Выберите свой проект
- зайдите в Настройки > Интеграции
- Добавьте URL-адрес веб-крючка и секретный токен, которые мы скопировали, на вкладке Jenkins Build Triggers.
- Выберите нужные триггеры и снимите флажок Проверка SSL.
- Создать веб-крючок
Предварительный просмотр создания GitLab webhook:
Протестируйте веб-крючок с событиями Push.
После успешного прохождения теста проект начинает строительство в Дженкинс. Войдите в Jenkins и проверьте сборки проекта. Вы можете увидеть коды GitLab на рабочих местах Jenkins .
Кроме того, вы можете увидеть отчеты о кодах проекта на SonarQube.
Все! Мы успешно интегрировали GitLab, Jenkins и SonarQube. Теперь для каждого push-события или события слияния в нашем репозитории GitLab Jenkins создаст проект и покажет качество кода в SonarQube.
Мы, надеемся, что эта статья была несложной для вас. Пожалуйста, дайте нам знать, если у вас есть какие-либо вопросы или предложения