Поиск по сайту:
Слово — тень дела (Демокрит).

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

20.03.2019
Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Этот учебник о непрерывной интеграции между 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, генерирующий токен пользователя:

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Сгенерировать токен аутентификации сервера в SonarQube

 

Теперь мы создадим проект, в котором будут опубликованы все отчеты анализа кода.

  • Перейдите в Администрирование > Проекты > Управление
  • Нажмите на Создать проект
  • Создайте проект с вашими Project_name и Project_key. Скопируйте название проекта и ключ. Мы передадим эти учетные данные в конфигурации Jenkins позже.

Предварительный просмотр создания проекта:

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Создание проекта в SonarQube

 

Шаг 2. Настройка на GitLab

Нам также нужны токены доступа пользователя GitLab, которые мы позже передадим в Jenkins. Это используется для аутентификации URL репозитория пользователя GitLab, откуда Дженкинс извлекает коды.

  • Перейти к Настройки пользователя в меню Параметры формы.
  • Перейти к токенам доступа
  • Создайте личный токен доступа, добавив любое уникальное имя ( Name ) и дату истечения срока действия токена (Expires at). Также установите Scopes на api.

Предварительный просмотр создания токенов доступа пользователя:

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Генерация токена доступа пользователя в GitLab

 

Шаг 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, Jenkins и SonarQube

Настройте сервер SonarQube

Теперь мы настроим GitLab и SonarQube в Jenkins.

  • Перейдите в Управление Jenkins > Настроить систему
  • На вкладке Серверы SonarQube введите URL-адрес вашего сервера SonarQube и токен аутентификации Сервера, сгенерированный ранее в SonarQube.

Предварительный просмотр добавления SonarQube в Jenkins:

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Добавление SonarQube в Jenkins

 

Теперь перейдите на вкладку GitLab и добавьте URL своего сервера GitLab на URL хоста GitLab.

В Credentials нам нужен токен GitLab API для доступа к GitLab. Нажмите Добавить и выберите Jenkins: поставщик учетных данных Jenkins.

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

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

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

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

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

После успешного добавления GitLab и SonarQube нам также необходимо добавить конфигурации сканера SonarQube.

  • Перейдите в Управление Jenkins > Глобальная конфигурация инструмента
  • На вкладке «SonarQube Scanner» выберите «Установка сканера SonarQube».
  • Снимите флажок «Install automatically» и добавьте домашнюю папку установки SonarQube.
Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Домашняя папка нашего сканера SonarQube была /opt/sonar-scanner

 

Шаг 4. Добавление проекта в Jenkins для непрерывной интеграции и непрерывной проверки.

После того, как все настройки выполнены, мы создадим проект на Jenkins.

Перейдите на панель инструментов Jenkins -> Новый элемент > Выберите проект в стиле фристайл . Создать проект с уникальным именем проекта

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Создание нового проекта в Jenkins

 

На Jenkins Dashboard выберите свой проект и нажмите «Настроить».

Прокрутите до вкладки Общие, выберите Соединение GitLab из выпадающего списка. Вы увидите имя подключения GitLab, которое мы добавили ранее, в разделе «Управление Jenkins > Настройка системы».

Выделите вкладку «Управление исходным кодом», выберите «Git» . Добавьте URL-адрес вашего проекта GitLab (используется тот же синтаксис, что и у команды git clone). Вы можете получить URL на своей странице проекта GitLab.

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Получение URL GitLab

 

Также укажите аутентификацию для GitLab URL.

  • В разделе Crendentials нажмите кнопку Добавить и выберите Jenkins: поставщик учетных данных Jenkins.
  • в Виде , выберите имя пользователя с паролем из выпадающего списка.
  • Введите имя пользователя и пароль для входа в GitLab.
  • Добавьте ключ с уникальным идентификатором.
Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Аутентификация для GitLab в Jenkins

 

Вам также необходимо указать ветви для сборки. Если оставить это поле пустым, все ветви будут проверены на наличие изменений и построены.

Добавление веток может быть сделано так: */<branch_name>

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Теперь перейдите к «Построить триггеры» и установите флажок «URL-адрес веб-крючка GitLab».

  • Скопируйте URL-адрес веб-крючка GitLab. Нам нужно снова настроить webhook на GitLab, используя этот URL.
  • Нажмите на Расширенный
  • Создайте как секретный токен. Скопируйте этот токен, он используется для настройки webhook на GitLab позже.

Предварительный просмотр создания триггеров сборки

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Генерация секретного токена

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Секретный токен

Наконец, перейдите на вкладку «Сборка» и в разделе «Выполнить сканер SonarQube» добавьте параметры конфигурации SonarQube, которые используются сканером SonarQube. Это может быть имя проекта SonarQube, ProjectKey, место установки сканера SonarQube и т. д.

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Сканер SonarQube в Jenkins

После того, как все настройки выполнены, нам нужно наконец настроить webhook на GitLab.

Webhook – это метод передачи данных в другие приложения в режиме реального времени.
Мы используем webhook в GitLab для автоматизации доставки кодов GitLab во время событий push или событий слияния, как указано.

  • Войдите в свою учетную запись Gilab.
  • GOTO Ваши проекты в Project меню.
  • Выберите свой проект
  • зайдите в Настройки > Интеграции
  • Добавьте URL-адрес веб-крючка и секретный токен, которые мы скопировали, на вкладке Jenkins Build Triggers.
  • Выберите нужные триггеры и снимите флажок Проверка SSL.
  • Создать веб-крючок

Предварительный просмотр создания GitLab webhook:

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

создание GitLab webhook

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

отмените выбор проверки SSL

Протестируйте веб-крючок с событиями Push.

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Тестирование событий push

После успешного прохождения теста проект начинает строительство в Дженкинс. Войдите в Jenkins и проверьте сборки проекта. Вы можете увидеть коды GitLab на рабочих местах Jenkins .

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Проверьте сборки проекта в Jenkins

Кроме того, вы можете увидеть отчеты о кодах проекта на SonarQube.

Настройка непрерывной интеграции с GitLab, Jenkins и SonarQube

Отчет о коде проекта в SonarQube

Все! Мы успешно интегрировали GitLab, Jenkins и SonarQube. Теперь для каждого push-события или события слияния в нашем репозитории GitLab Jenkins создаст проект и покажет качество кода в SonarQube.

Мы, надеемся, что эта статья была несложной для вас. Пожалуйста, дайте нам знать, если у вас есть какие-либо вопросы или предложения

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

3 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Simeon

Серьезня статейка, нужно попробовать…

Nurlan

зачем Jenkins, если паиплайны можно строить в GitLab????

KirillK2

Не получается добавить Token для sonarqube_server в jenkins т.к. вместо “server authentification token” выбор сredentials Jenkins, из досупных kind: Gitlab API Token.

Читайте также

Спасибо!

Теперь редакторы в курсе.