інтеграція SonarQube з GitLab. Ми детально пройдемо через кожен етап.
Попередні вимоги
- Сервер SonarQube: Вам потрібен сервер SonarQube (локально або за допомогою SonarCloud).
- Репозиторій GitLab: У вас має бути репозиторій GitLab з CI/CD конвеєром (тобто файл .gitlab-ci.yml).
- Токен 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 Account → Security → Generate 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.
- Перейдіть в Settings → CI / CD → Variables.
- Додайте нову змінну:
- 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:
- Додайте плагін 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"
}
- В пайплайні замініть команду для 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 і додасте необхідні токени:
- Закомітьте зміни:
git add .gitlab-ci.yml
git commit -m "Додано аналіз SonarQube до CI pipeline"
git push origin master # Або гілку, над якою ви працюєте
- Це запустить CI/CD пайплайн у GitLab. Аналіз SonarQube буде виконано в межах пайплайна.
Крок 7: Перевірка результатів SonarQube
7.1. Перегляд результатів аналізу в SonarQube
Після завершення пайплайна:
- Перейдіть до вашої панелі керування SonarQube.
- Знайдіть ваш проект на інстанції SonarQube.
- Ви повинні побачити результати аналізу якості коду, покриття, помилок, вразливостей тощо.
Необов’язковий крок: Інтеграція SonarQube з GitLab для Merge Requests (MR)
Якщо ви хочете, щоб SonarQube автоматично надавав зворотній зв'язок на Merge Requests в GitLab:
- У SonarQube перейдіть до Administration → Configuration → GitLab Integration.
- Введіть URL вашої GitLab інстанції та налаштуйте інтеграцію.
Це налаштування дозволить SonarQube коментувати Merge Requests з відгуками про якість коду.
Висновок
Дотримуючись цих кроків, ви інтегрували SonarQube з GitLab. Кожного разу, коли ваш пайплайн запускається, SonarQube аналізуватиме ваш код і надаватиме детальний зворотній зв'язок. Це допоможе забезпечити високу якість коду та запобігти виникненню проблем у вашому проєкті.
Перекладено з: Integrating SONARQUBE with GitLab