Установка SonarQube

Ранее мы подготовили  Ubuntu на гипервизоре VMware и установили Gitlab , теперь давайте установим Sonarqube.

 

1. Установка java

Для работы Sonarqube необходимо установить виртуальную машину java, причем для 10 версии Sonarqube нужна виртуальная машина минимально 17 версии. Проверить установлена ли java и какой версии можно командой:

$java -version

Если на экране мы получаем что-то подобное, то можно заключить, что java не установлена. Установить можно командой:

$sudo apt -y install openjdk-17-jre

Вновь проверяем:

$java -version

Devops 1C. Проверка версии Java после установки

Вот теперь все как надо, видим ответ системы установленной версии виртуальной машины. 

 

2. Установка Postgree SQL. 

Еще один компонент, который необходим для работы Sonarqube - это  система управления базами данных. Для SonarQube возможно использовать Microsoft SQL, Postgree SQL или Oracle. Мы будем использовать  Postgree. Устанавливаем:

$sudo apt install postgresql postgresql-contrib

Devops 1C. Установка Postgree SQL

Соглашаемся и устанавливаем. Далее необходимо создать пользователя и базу данных. Выполняем последовательность команд:

$sudo -Hiu postgres 

$createuser sonaradmin 

$createdb -O sonaradmin sonarqubedb 

$psql 

$ALTER USER sonaradmin WITH ENCRYPTED password 'mypassword'; 

$\q 

$exit

Строку ''mypassword' нужно заменить произвольным паролем, это пароль пользователя sonaradmin на базу данных sonarqubedb в postgres.

 

3. Установка Sonarqube

Переходим в каталог opt

$cd /opt

Загружаем актуальную версию Sonarqube (на момент выхода статьи это 10.4.1.88267).

$wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-10.4.1.88267.zip

Распаковываем:

$sudo unzip sonarqube-10.4.1.88267.zip -d /tmp/

Переносим распакованную папку: 

$mv /opt/sonarqube{-10.4.1.88267,}

Добавляем нового пользователя операционной системы, под которым и будет запускаться Sonarqube:

$useradd -M -d /opt/sonarqube/ -r -s /bin/bash sonarqube

Меняем ему пароль, чтобы протестировать запуск службы в консоли:

$sudo passwd sonarqube

Даем права на каталог:

$sudo chown -R sonarqube: /opt/sonarqube

Инициализируем параметры подключения к Postgree, открываем в редакторе:

$sudo nano /opt/sonarqube/conf/sonar.properties

Находим тут строки

sonar.jdbc.username= 
sonar.jdbc.password=

...
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema
 

Инициализируем их нашими значениями:

sonar.jdbc.username=sonaradmin  
sonar.jdbc.password=mypassword
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqubedb
 

4. Дополнительные настройки перед стартом. 

В целом, мы  почти все настроили кроме автозапуска демона sonar при перезагрузке. Но есть еще ряд моментов, которые необходимо учесть перед запуском Sonarqube. Во первых, надо изменить системную переменную vm.max_map_count, чтобы исключить ошибку "max virtual memory areas vm.max_map_count 65530 is too low, increase to at least 262144":

Открываем в nano конфигурационный файл и добавляем строку vm.max_map_count=262144:

$sudo nano /etc/sysctl.conf

Devops 1c. max virtual memory areas vm.max_map_count 65530 is too low, increase to at least 26214

$ sudo sysctl -p
 

 Далее, выделим нашей виртуальной машине побольше памяти. На 4Гб ОЗУ появлялась ошибка связанная с созданием индексов ElasticSearch "fail to execute es requestes refresh request on indices". Вылечилось добавлением ОЗУ,  удалением папки ES8 в каталоге /opt/sonarqube/data и рестартом

Devops 1C. Увеличение оперативной памяти на vwware

 

5. Тестовый старт с выводом лога в консоль. 

Все готово для запуска. Выполнять запуск необходимо под ранее созданным пользователем sonarqube, если попытаться под текущим, то получим ошибку ElasticSearch  "can not run as root". Переключаем в консоли под пользователя sonarqube:

$su sonarqube

Вводим заданный нами пароль и запускаем Sonarqube

$/opt/sonarqube/bin/linux-x86-64/sonar.sh console

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

Devops 1C. Старт Sonarqube

Сначала довольно быстро стартует sonar, потом подольше устанавливается ElasticSearch. Все это время, если попробовать войти на дефолтный порт 9000, в нашем случае http://192.168.1.6:9000 можно увидеть такую картину:

Devops 1C. Окно при первом запуске Sonarqube

После успешного старта входим под дефолтными логин:admin, пароль: admin, переходим в  меню Administration - Marketplaces, устанавливаем BSL плагин для 1с и  пакет для русской локализации. 

Devops 1C. Первый запуске Sonarqube

Sonarqube предлагает рестарт службы, нажимаем кнопку "Restart Server". После рестарта входим в веб-интерфейс заново и видим что русскоязычная локализация сработала. 

Devops 1C. Ставим BSL и русскую локализацию Sonarqube

 

6. Настройка автозапуска SonarQube. 

Настроим запуск sonarqube как службы. Останавливаем запущенную в консоли программу, выходим из командной строки пользователя sonarqube. 

Devops 1C. Лог вывода Sonarqube в консоль

Нам необходимо инициализировать конфигурационный  файл  /etc/systemmd/system/sonarqube.service. Открываем файл и заполняем его:

$sudo nano /etc/systemmd/system/sonarqube.service

В файл необходимо внести следующую информацию:

[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=simple
User=sonarqube
Group=sonarqube
PermissionsStartOnly=true
ExecStart=/bin/nohup java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-10.4.1.88267.jar StandardOutput=syslog
LimitNOFILE=131072
LimitNPROC=8192
TimeoutStartSec=5
Restart=always
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target

Сохраняем файл. Запускаем sonar на уровне службы:

$systemctl enable --now sonarqube

Проверяем статус службы:

$sudo systemctl status sonarqube

Если все сделали правильно - получаем в консоли статус active(running). Теперь, при перезагрузке служба будет подниматься автоматически.