Інтеграція SonarQube з конвеєром Azure DevOps

текст перекладу
pic

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

У цій статті ми дізнаємося, як інтегрувати SonarQube в Azure DevOps пайплайн, збирати вихідний код, аналізувати його та надавати результат сканування в панелі моніторингу SonarQube.

Необхідні умови

  • Підготуйте віртуальну машину
  • Встановіть Docker на машину
  • Завантажте та запустіть образ SonarQube
  • Створіть сервер Azure DevOps

Кроки

1 — Запуск SonarQube як контейнеру за допомогою Docker

  • Перейдіть на сторінку SonarQube на Docker Hub, щоб переглянути детальні інструкції. Ми використаємо найпростіший варіант, ви можете додати томи для збереження даних.
docker run -d --name sonarqube -p 9000:9000 sonarqube:community
  • Перевірте, чи SonarQube працює в браузері
  • За замовчуванням ім’я користувача та пароль — admin для обох. Вам буде запропоновано змінити їх, після чого натискайте "Зберегти".

pic

2 — Налаштування Azure DevOps

  • Імпортуйте свій вихідний код у репозиторій Azure DevOps
  • Клікніть на своє зображення профілю, щоб отримати опцію створення персонального токена доступу (PAT)
  • Скопіюйте його в безпечне місце
  • Ми повернемося до завершення налаштування Azure DevOps

pic

pic

  • Не розголошуйте ваш токен, токен, використаний тут, був видалений

3 — Налаштування конфігурації вашої платформи DevOps

  • Тепер ми переходимо на панель моніторингу SonarQube
  • Виберіть репозиторій, де зберігається ваш код. У цьому випадку ми вибираємо Azure DevOps
  • Це припускає, що ваш код налаштований в репозиторії Azure DevOps, додайте URL вашої організації, і ви автоматично побачите всі проекти в цій організації

pic

  • Виберіть проект, який ви хочете інтегрувати для сканування Sonar, і імпортуйте його
  • Виберіть інструмент безперервної інтеграції, в цьому випадку — Azure DevOps

pic

  • Інструкції будуть надані, просто слідуйте за ними

pic

4 — Налаштування підключення сервісу в Azure DevOps

pic

  • Перейдіть в налаштування, виберіть "Service Connection" та оберіть SonarQube

pic

  • Введіть ім’я для підключення сервісу
  • Введіть URL або кінцеву точку вашого сервера SonarQube
  • Введіть токен, згенерований на сервері Sonar
  • І натисніть "Зберегти"

pic

5 — Додавання коду SonarQube до вашого пайплайну

  • Перейдіть на сторінку SonarQube, щоб знайти код для вашого додатку
  • У цьому випадку я працюю з додатком для Netflix, який побудовано на JavaScript

pic

  • Ось код
steps:  
 # Checkout the repository  
 - checkout: self  

 # Disable shallow fetch  
 fetchDepth: 0  

# Prepare Analysis Configuration task  
- task: SonarQubePrepare@7  
 inputs:  
 SonarQube: ''  
 scannerMode: 'cli'  
 configMode: 'manual'  
 cliProjectKey: ''  

# Add your build task(s) here  

# Run Code Analysis task  
- task: SonarQubeAnalyze@7  
 inputs:  
 jdkversion: 'JAVA_HOME_17_X64'  

# Publish Quality Gate Result task  
- task: SonarQubePublish@7  
 inputs:  
 pollingTimeoutSec: '300'
  • Заповніть всі необхідні поля та запустіть пайплайн
    текст перекладу
  • замініть ключ проекту в коді на ключ, згенерований на сервері Sonar

pic

6 — Додатково, створіть Quality Gate

pic

Quality Gate використовується для визначення метрик і стандартів, яким ваш застосунок має відповідати, перш ніж його можна буде вважати чистим кодом.

Ось деякі з метрик:

  • Code Coverage вимірює відсоток вашого коду, який протестовано юніт-тестами.
    текст перекладу
    налаштуйте так, щоб досягти принаймні 80% покриття для критичних проєктів. Менше для менш критичного коду.
  • Дубльовані рядки (%) t відсоток коду, що дублюється між файлами або функціями
  • Рейтинг надійності m оцінює, наскільки надійний код, враховуючи такі проблеми, як баги.
  • Безпекові гарячі точки i виявляє потенційні вразливості безпеки
  • Коефіцієнт успішних тестів t відношення успішних тестів до загальної кількості тестів, забезпечте 100% успіхів в автоматизованих тестах, прагнучи до нульових помилок тестування в продуктивному середовищі.
  • Вразливості m оцінює кількість вразливостей безпеки в кодовій базі
  • Запахи коду оцінює кількість проблем, що свідчать про погані практики кодування, але не обов'язково впливають на функціональність.
  • Запустіть ваш пайплайн

pic

  • перевірте результат на сервері SonarQube

pic

pic

Перекладено з: Integrating SonarQube With Azure DevOps Pipeline

Leave a Reply

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