Раздел 7. Установка подсистемы
Процесс развертывания SonarQube и его интеграции с имеющимся окружением (сборочная система, сервер непрерывной интеграции, система контроля версий) не вызывает затруднений благодаря большому количеству подробной документации. Достаточно легко настраиваются виджеты, позволяющие оценивать как состояние портфолио проектов в целом, так и состояние каждого проекта в отдельности.
Наиболее актуальная информация по установке сервера «SonarQube» и его компонент находится на официальной странице установки сервера SonarQube и его компонент от производителя https://docs.sonarqube.org/latest/setup/install-server.
В данном руководстве приведены самые важные и полезные особенности установки.
Установка сервера проверки SonarQube
В данном параграфе приводится список действий для установки на локальной машине пользователя под управлением операционной системы MS Windows 10 x64. Для системы Unix необходимо выполнить аналогичные действия.
- Изучите соответствие версий JDK, SonarQube и Sonar-scanner в разделе Раздел 5. Необходимые компоненты и определите необходимые версии.
- Скачайте последний релиз SonarQube с официального сервера.
- Извлеките файлы в каталог, с которого будет запускаться сам сервер SonarQube. В дальнейшем этот каталог будет указываться как %SONARQUBE_HOME%
- Определите разрядность операционной системы для выбора вида Java Development Kit: 32-разрядная или 64-разрядная.
- По возможности мы рекомендуем использовать «OracleJDK» вместо «OpenJDK» из-за более агрессивной работы сборщика мусора.
- Скачайте и установите Java Development Kit необходимой разрядности (х86 для 32-битной ОС, х64 – для 64-разрядной).
Подключение плагина «SonarQube 1C (BSL) Plugin» и активация лицензии
В комплекте подсистемы поставляется jar-файл плагина и файл лицензии «sonarqube-bsl-plugin.lcs». Далее описывается порядок действий по интегрированию плагина в платформу SonarQube и активации его лицензии. Все нижеописанные действия должны выполняться пользователем с правами администратора.
Порядок действий:
- Файл плагина (jar-файл) поместите в директорию «extensions/plugins» каталога, в который был разархивирован сервер SonarQube.
- Файл лицензии «sonarqube-bsl-plugin.lcs» поместите в домашнюю директорию пользователя, под которым запускается сервис SonarQube.
- Для Windows – в следующую системную директорию: «C:\Windows\System32\config\systemprofile» (в режиме администратора).
- Для Linux – положите указанный файл в каталог пользователя.
- Также можно указать произвольное местоположение файла лицензий. Для этого в файле «%SONARQUBE_HOME%/conf/sonar.properties» необходимо изменить расположение файла лицензий в блоках "web" и "ce" вида:
sonar.web.javaAdditionalOpts=-Dorg.silverbulleters.sonar.plugins.bsl.license.file=/path/to/sonarqube-bsl-plugin.lcs
sonar.ce.javaAdditionalOpts=-Dorg.silverbulleters.sonar.plugins.bsl.license.file=/path/to/sonarqube-bsl-plugin.lcs
Если вы переименуете файл лицензии, плагин сможет его найти только при указании произвольного местоположения (см п.5 выше). При этом расширение файла менять нельзя. Лицензии с расширением lcs
предназначены для плагина версии 2022.7 и более новых и отличаются от прежних лицензий lic
форматом содержимого и механизмами проверки.
Запуск и настройка сервера SonarQube
- На Windows запустите web-сервер SonarQube, создав службу Windows и включив её (соблюдайте разрядность операционной системы).
Можно воспользоваться инструментом в поставке сервера в каталоге «%SonarHome%\bin\windows-x86-64» – «InstallNTService.bat», «StartNTService.bat», «StopNTService.bat»
Следует учитывать, что указанные процедуры необходимо выполнять с правами локального администратора.
- Перейдите в браузере по адресу http://localhost:9000 и убедитесь, что локальный сервер SonarQube запущен:
- Войдите в систему управления под учетной записью «admin» с паролем «admin» Перейдите в настройки установки плагинов сервера:
- Установите расширение «Russian pack» для подключения русского языка, что упростит вашу дальнейшую работу с плагином:
- После изменения надписи «Install» на «Install pending» (надпись изменит цвет с синего на зеленый) перезапустите сервер последовательным выключением – включением службы (через консоль «Службы» или с помощью вышеперечисленных инструментов из поставки сервера).
- Подождите до 5 минут и проверьте доступность Web-интерфейса SonarQube по пути http://localhost:9000. Если у вас выбран другой адрес веб-интерфейса сервера, укажите его.
- Перейдите по ссылке и войдите в систему под учетной записью admin (см. п4-п5);
- Перейдите на вкладку "Правила" и убедитесь в существовании языка 1С (BSL):
- Если Вы не видите язык «1C (BSL)», тогда проверьте правильность установки файла лицензии или файла плагина. Если местоположение файла лицензии изменилось, перезапустите сервер SonarQube согласно разделу с подключением лицензии.
Настройка выделения оперативной памяти
Если у вас установлена 32-х битная версия JDK, необходимо донастроить файл «%SONARQUBE_HOME%/conf/sonar.properties» - в «javaOpts» компонентов «web, search и ce» указать параметр «-server». Пример приведен ниже. Если у вас установлена 64-х битная версия JDK, ключ -server указывать бессмысленно, так как он включен по умолчанию.
Выделение доступной оперативной памяти регулируется с помощью опции «-Xmx». Выделение памяти рекомендуется выполнить для 3-х серверных компонент «sonar.web.javaOpts, sonar.ce.javaOpts, sonar.search.javaOpts». Особенно для компонента «ce», выполняющего «серверную» часть анализа (обработка результатов, дорасчет серверных метрик, сохранение результатов в базу).
В Linux-системах могут возникнуть проблемы в отображении web-компонент (замедление работы), связанных с недостаточным количеством энтропии для применения шифрования. Побороть это можно, изменив параметр -Djava.security.egd.
Часть конфигурационного файла «%SONARQUBE_HOME%/conf/sonar.properties» с одного из наших production-серверов (Java 11, 64-x):
sonar.web.javaOpts=-Xmx2G -XX:+HeapDumpOnOutOfMemoryError \
-Djava.security.egd=file:/dev/./urandom
sonar.ce.javaOpts=-Xmx6G -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-server -Xmx1G -Xms256m -Xss256k -Djna.nosys=true \
-XX:+HeapDumpOnOutOfMemoryError
Обратите внимание, что использование ключа -XX:+UseConcMarkSweepGC, не рекомендовано, так как данный сборщик мусора объявлен устаревшим начиная с Java 9. Это же и касается ключа -XX:+UseParNewGC. Данный сборщик был объявлен устаревшим в Java 9 и удален в Java 10.
Согласно этому конфигурационному файлу сервер SonarQube должен иметь минимум 9 гигабайт (-Xmx 2 + 6 + 1) свободной памяти для своей работы + некоторое количество памяти для работы Elasticsearch.
Установка инструмента сканирования Sonar-Scanner
В данном руководстве описываются действия по установке платформы «SonarQube» с использованием плагина «SonarQube 1C (BSL) Plugin» и настройке инструмента анализа кода «Sonar-Scanner».
Чтобы иметь возможность запустить сервер проверки SonarQube в любом каталоге, следует настроить инструмент Sonar-Scanner по описанному ниже алгоритму:
- Скачайте архив службы по ссылке из раздела «Необходимые компоненты» Извлеките файлы из архива; каталог должен иметь подобный вид:
- Добавьте переменную окружения типа %PATH% со ссылкой на каталог bin (это делается для того, чтобы можно было запускать службу Sonar-Scanner из любого каталога):
- Установка параметров клиентской части анализа (Sonar-scanner) производится через установку переменной среды «SONAR_SCANNER_OPTS».
Пример указания (для Windows, Java 8):
sh set SONAR_SCANNER_OPTS=-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xmx2G
Пример указания (для Windows, Java 9+):
sh set SONAR_SCANNER_OPTS=-Xmx2G
- Настройте антивирус для увеличения производительности анализа
Каталоги «%USERPROFILE\.sonar» и подкаталог «.scannerwork» добавьте в исключения антивируса. Подкаталог «.scannerwork» автоматически создается в рабочем каталоге проекта