Інтеграція SONARQUBE з GitLab

інтеграція SonarQube з GitLab. Ми детально пройдемо через кожен етап.

Попередні вимоги

  1. Сервер SonarQube: Вам потрібен сервер SonarQube (локально або за допомогою SonarCloud).
  2. Репозиторій GitLab: У вас має бути репозиторій GitLab з CI/CD конвеєром (тобто файл .gitlab-ci.yml).
  3. Токен SonarQube: Вам потрібно мати токен для автентифікації при аналізі SonarQube.

Крок 1: Встановлення SonarQube

1.1. Використання SonarCloud (необов'язково)

  • Якщо ви використовуєте SonarCloud, немає потреби вручну налаштовувати SonarQube. Просто створіть проект на SonarCloud. SonarCloud URL.

1.2. Самостійне встановлення SonarQube

  • Завантажте SonarQube з SonarQube Downloads.
  • Розпакуйте файл і слідуйте інструкціям з офіційної документації для вашої операційної системи.

Наприклад, для Linux:

tar -xvzf sonarqube-x.x.x.zip

cd sonarqube-x.x.x/bin/linux-x86–64/

./sonar.sh start
  • SonarQube буде доступний за адресою http://localhost:9000.

Крок 2: Налаштування проекту в SonarQube

2.1. Створення проекту в SonarQube

  • Увійдіть в SonarQube (або SonarCloud).
  • Якщо ви використовуєте SonarQube локально, перейдіть за адресою http://localhost:9000.
  • Створіть новий проект, натиснувши на Create Project.

2.2. Генерація токену SonarQube

  • Перейдіть у My AccountSecurityGenerate Token.
  • Введіть ім’я для токену (наприклад, gitlab-ci-token) і скопіюйте згенерований токен.

Крок 3: Налаштування репозиторію GitLab

3.1. Перевірте, чи активований GitLab CI/CD

  • Вам потрібен файл .gitlab-ci.yml в корені вашого репозиторію GitLab для визначення CI/CD конвеєра.

Якщо його немає, створіть файл:

touch .gitlab-ci.yml

3.2. Зберігання токену SonarQube в GitLab CI/CD Variables

  • Перейдіть до вашого проекту GitLab.
  • Перейдіть в SettingsCI / CDVariables.
  • Додайте нову змінну:
    • Key: SONAR_TOKEN
    • Value: Вставте токен SonarQube, який ви згенерували раніше.

Крок 4: Налаштування GitLab CI/CD конвеєра

4.1. Редагування файлу .gitlab-ci.yml

  • Файл .gitlab-ci.yml визначає етапи та завдання вашого CI/CD конвеєра.
  • Ось приклад конвеєра:
stages:
  - build
  - test
  - analyze

variables:
  SONAR_HOST_URL: "http://your-sonarqube-instance.com" # Замініть на URL вашого SonarQube
  SONAR_TOKEN: $SONAR_TOKEN # Токен з GitLab CI/CD Variables

before_script:
  - apt-get update -y && apt-get install -y openjdk-11-jdk # Встановлення Java, якщо потрібно

build:
  stage: build
  script:
    - echo "Будуємо проект"
    - mvn clean install # Замініть на вашу команду для побудови (Maven, Gradle тощо)

test:
  stage: test
  script:
    - echo "Запускаємо тести"
    - mvn test # Замініть на вашу команду для тестування

sonarqube:
  stage: analyze
  script:
    - mvn sonar:sonar -Dsonar.projectKey=your_project_key -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_TOKEN
  only:
    - master # Вказуємо гілку (наприклад, 'master'), де ви хочете виконати аналіз

4.2. Пояснення файлу .gitlab-ci.yml

  • stages: Визначає етапи конвеєра (build, test, analyze).
  • variables:
    • SONARHOSTURL: URL вашого SonarQube сервера (локально або через SonarCloud).
    • SONAR_TOKEN: Токен для SonarQube, який буде взято з GitLab CI/CD змінних.
  • before_script: Встановлює Java, якщо це необхідно для проекту.
  • build: Завдання для побудови проекту (ви можете замінити на Maven, Gradle чи інші інструменти).
  • test: Завдання для запуску юніт-тестів.
  • sonarqube: Завдання для виконання аналізу в SonarQube.
  • only: Запускає завдання для аналізу в SonarQube тільки на гілці master (або на іншій, яку ви вкажете).

Крок 5: Встановлення SonarQube Scanner

Залежно від вашого проекту (Maven, Gradle тощо), вам потрібно буде встановити відповідний SonarQube сканер.

5.1. SonarQube Scanner для Maven

Якщо ви використовуєте Maven:

  1. Додайте плагін SonarQube у ваш файл pom.xml:
<build>
  <plugins>
    <plugin>
      <groupId>org.sonarsource.scanner.maven</groupId>
      <artifactId>sonar-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

3.9.0.2155

8.

9.

10.

1. Завдання sonarqube в пайплайні використовуватиме команду mvn sonar:sonar для запуску аналізу.

**5.2. SonarQube Scanner для Gradle**

Якщо ви використовуєте **Gradle**:

1. Додайте плагін SonarQube у ваш файл build.gradle:

```gradle
plugins {
  id "org.sonarqube" version "4.0.0.2929"
}
  1. В пайплайні замініть команду для Maven на задачу Gradle для аналізу SonarQube:
./gradlew sonarqube -Dsonar.projectKey=your_project_key -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_TOKEN

Крок 6: Запуск GitLab Pipeline

6.1. Завантаження змін у GitLab

Після того, як ви налаштуєте файл .gitlab-ci.yml і додасте необхідні токени:

  1. Закомітьте зміни:
git add .gitlab-ci.yml
git commit -m "Додано аналіз SonarQube до CI pipeline"
git push origin master # Або гілку, над якою ви працюєте
  1. Це запустить CI/CD пайплайн у GitLab. Аналіз SonarQube буде виконано в межах пайплайна.

Крок 7: Перевірка результатів SonarQube

7.1. Перегляд результатів аналізу в SonarQube

Після завершення пайплайна:

  1. Перейдіть до вашої панелі керування SonarQube.
  2. Знайдіть ваш проект на інстанції SonarQube.
  3. Ви повинні побачити результати аналізу якості коду, покриття, помилок, вразливостей тощо.

Необов’язковий крок: Інтеграція SonarQube з GitLab для Merge Requests (MR)

Якщо ви хочете, щоб SonarQube автоматично надавав зворотній зв'язок на Merge Requests в GitLab:

  1. У SonarQube перейдіть до AdministrationConfigurationGitLab Integration.
  2. Введіть URL вашої GitLab інстанції та налаштуйте інтеграцію.

Це налаштування дозволить SonarQube коментувати Merge Requests з відгуками про якість коду.

Висновок

Дотримуючись цих кроків, ви інтегрували SonarQube з GitLab. Кожного разу, коли ваш пайплайн запускається, SonarQube аналізуватиме ваш код і надаватиме детальний зворотній зв'язок. Це допоможе забезпечити високу якість коду та запобігти виникненню проблем у вашому проєкті.

Перекладено з: Integrating SONARQUBE with GitLab

Leave a Reply

Your email address will not be published. Required fields are marked *