Этот учебник о непрерывной интеграции между GitLab, Jenkins и SonarQube. В конце этого руководства вы сможете просматривать отчеты о качестве кодов репозитория GitLab на SonarQube, используя Jenkins в качестве Continuous Integrator и sonar-scanner в качестве анализатора кода.
Прежде чем мы увидим, как настроить непрерывную интеграцию (CI), давайте сначала посмотрим на вовлеченные компоненты и какую роль они играют в нашей установке здесь.
GitLab – это платформа с открытым исходным кодом для совместной работы и контроля версий. Он может быть установлен на ваших серверах для частного размещения ваших кодов. GitLab предоставляет функции управления исходным кодом (SCM), аналогичные GitHub и BitBucket.
Jenkins – это сервер непрерывной интеграции с открытым исходным кодом. Это инструмент автоматизации, который можно использовать для тестирования и компиляции ваших кодов, а также для развертывания его в рабочей среде, если сборка прошла успешно.
Jenkins здесь используется для извлечения кодов из GitLab (в режиме реального времени, когда код перемещается или объединяется), построения кодов проекта и передачи результата в SonarQube для визуальной интерпретации.
SonarQube – это сервер Continuous Inspection с открытым исходным кодом. Это инструмент, используемый в качестве контроля качества для проверки кода. Он предоставляет автоматические отчеты об анализе кодов, обнаруживает ошибки, уязвимости безопасности, дублированные коды, комментарии, запахи кода и многое другое для различных языков программирования.
В этой статье предполагается, что GitLab, Jenkins и SonarQube уже установлены в вашей системе Linux. Установка этих инструментов не является нашей целью здесь.
Теперь, когда вы знаете используемые инструменты и их роли, давайте посмотрим, как настроить нашу непрерывную интеграцию.
Нам необходим токен аутентификации сервера от SonarQube, который мы позже передадим Jenkins. Этот токен предоставляет доступ к Jenkins для запуска сборок Jenkins в SonarQube для анализа кода.
Вот обзор SonarQube, генерирующий токен пользователя:
Теперь мы создадим проект, в котором будут опубликованы все отчеты анализа кода.
Предварительный просмотр создания проекта:
Нам также нужны токены доступа пользователя GitLab, которые мы позже передадим в Jenkins. Это используется для аутентификации URL репозитория пользователя GitLab, откуда Дженкинс извлекает коды.
Предварительный просмотр создания токенов доступа пользователя:
Нам нужно настроить GitLab и 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.
Предварительный просмотр добавления 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.
Перейдите на панель инструментов Jenkins -> Новый элемент > Выберите проект в стиле фристайл . Создать проект с уникальным именем проекта
На Jenkins Dashboard выберите свой проект и нажмите «Настроить».
Прокрутите до вкладки Общие, выберите Соединение GitLab из выпадающего списка. Вы увидите имя подключения GitLab, которое мы добавили ранее, в разделе «Управление Jenkins > Настройка системы».
Выделите вкладку «Управление исходным кодом», выберите «Git» . Добавьте URL-адрес вашего проекта GitLab (используется тот же синтаксис, что и у команды git clone). Вы можете получить URL на своей странице проекта GitLab.
Также укажите аутентификацию для GitLab URL.
Вам также необходимо указать ветви для сборки. Если оставить это поле пустым, все ветви будут проверены на наличие изменений и построены.
Добавление веток может быть сделано так: */<branch_name>
Теперь перейдите к «Построить триггеры» и установите флажок «URL-адрес веб-крючка GitLab».
Предварительный просмотр создания триггеров сборки
Серьезня статейка, нужно попробовать…
зачем Jenkins, если паиплайны можно строить в GitLab????
Не получается добавить Token для sonarqube_server в jenkins т.к. вместо “server authentification token” выбор сredentials Jenkins, из досупных kind: Gitlab API Token.