Deploy SonarQube Server

в 9:14, , рубрики: sonar, sonarqube, Проектирование и рефакторинг, системное администрирование, управление разработкой

Привет, читатели!

В данном руководстве хочу изложить пошаговую настройку по развёртыванию платформы для непрерывного анализа и измерения качества кода. Подобных статей в сети достаточно много, но я хочу выделить лишь главное, чтобы все новички с первого раза смогли с ней разобраться.

Вы уже изучили вики, не так ли?

И прежде чем начнём

Хочу, чтобы вы определились, какую версию вам внедрять, ведь с каждым обновлением всё больше и больше плагинов становятся платными, что, естественно, скажется на финансовых затратах или функционале.

В общем — перейдите по этой ссылке и убедитесь сами: plugin version matrix

Согласно документации, сервер и базу данных рекомендуется держать на разных машинках.

Но в песочнице можно потренировать и на одной.

Итак. Я работаю с виртуальными машинками. Подготовил 2 штуки, точнее поднял одну и сделал из неё дубликат.

Под рукой у меня оказался Ubuntu server 18.04.3 LTS.

Изменить имя и ip вы сможете легко и просто с помощью этих команд:

::: change hostname :::

$ hostnamectl set-hostname sonarapp
sudo nano /etc/hostname
sudo nano /etc/hosts

::: change ip ubuntu :::

sudo nano /etc/netplan/01-eth0.yaml

Там найдите знакомые строчки и поменяйте параметры имени машинки и IP адреса.

И что должно получиться:

Sonar app server [SonarApp]
user: admin
IP: 192.168.0.15
Platform: Ubuntu server 18.04.3 LTS [8 cores, 16GB of RAM, 20Gb + 50Gb (/opt) disk space]

Sonar database [SonarDB]
user: admin
IP: 192.168.0.16
Platform: Ubuntu server 18.04.3 LTS [8 cores, 16GB of RAM, 20Gb + 100Gb disk space]

Непосредственно начало работы.

Заходим на первую тачку — 192.168.0.15 (SonarApp) НЕ под root'ом, а под своим пользаком admin'ом. Те строчки, что начинаются с символа $ — это терминальный ввод, а остальные — уже что правим в файлах или что должны получить на выходе (вывод инфы)

  • нужна JAVA. Возьмём OpenJDK

::: Install open-jdk11 :::

$ sudo apt-get install openjdk-11-jdk

::: change java PATH :::

$ nano ~/.bash_profile
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin/java 
export PATH=/usr/lib/jvm/java-11-openjdk-amd64/bin:$PATH

::: Download and configure SonarQube :::

Download the SonarQube installer files archive.

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

Install unzip by running:

# apt-get -y install unzip

Unzip the archive using the following command

$ sudo unzip sonarqube-7.9.1.zip -d /opt

Rename the directory

$ sudo mv /opt/sonarqube-7.9.1 /opt/sonarqube

Add Sonar User and Privileges

Create a user named sonar and make it the owner of the /opt/sonarqubedirectory

$ sudo adduser sonar
$ sudo passwd sonar
$ sudo chown -R sonar:sonar /opt/sonarqube

Continuation configure SonarQube

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

sonar.web.host=192.168.0.15
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
# sonar.jdbc.url=jdbc:postgresql://localhost/username
sonar.jdbc.url=jdbc:postgresql://192.168.0.16/sonar
sonar.web.javaAdditionalOpts=-server

Create a file /etc/systemd/system/sonarqube.service and past the following content on to the file

[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=simple
User=sonar
Group=sonar
PermissionsStartOnly=true
ExecStart=/bin/nohup java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-7.9.1.jar
StandardOutput=syslog
LimitNOFILE=65536
LimitNPROC=8192
TimeoutStartSec=5
Restart=always

[Install]
WantedBy=multi-user.target

Start and enable sonarqube

$ sudo systemctl start sonarqube
$ sudo systemctl enable sonarqube

To check if the service is running, run:

$ sudo systemctl status sonarqube

Log:

tail -f /opt/sonarqube/logs/sonar.log

Теперь подключаемся ко второй тачке

192.168.0.16 (SonarDB) под нашим добрым admin'ом.

::: Installing the Database :::

Install the PostgreSQL repository.

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
$ wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

Install the PostgreSQL database server by running:

$ sudo apt-get -y install postgresql postgresql-contrib

Start PostgreSQL server and enable it to start automatically at boot time by running:

$ sudo systemctl start postgresql
$ sudo systemctl enable postgresql

Change the password for the default PostgreSQL user

$ sudo passwd postgres

Switch to the postgres user.

$ su - postgres

Switch to the PostgreSQL shell.

$ psql

::: Configure PostgreSQL :::

Set a password for the newly created user for SonarQube database.

CREATE ROLE sonar WITH PASSWORD 'sonar';
SELECT rolname FROM pg_roles;
alter role sonar login;
SELECT pg_reload_conf();
Create a new database for PostgreSQL database by running:
create database sonar owner sonar;

Exit from the psql shell:

'q'

::: Move Databases PostgreSQL :::

Stop PostgreSQL service

$ service postgresql stop
# or
$ /usr/lib/postgresql/10/bin/pg_ctl stop -D /var/lib/postgresql/10/main

Change data directory.

$ psql

# show data_directory;
/var/lib/postgresql/10/main

$ sudo rsync -av /var/lib/postgresql /opt/sonardb
$ sudo mv /var/lib/postgresql/*/main /var/lib/postgresql/*/main.bak

$ sudo nano /etc/postgresql/*/main/postgresql.conf # change location for new data_directory.
data_directory = '/opt/sonardb/postgresql/10/main'
listen_addresses = '*' 

Change check

$ sudo -u postgres psql

# show data_directory;
______________________
/opt/sonardb/postgresql/10/main
# q

А также нужно проверить системные параметры. Их можно добавить в файл /etc/sysctl.conf или ввести в терминале :

sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536
ulimit -u 4096

Для проверки доступности базы данных подключимся к 192.168.0.15 и наберём:

$ psql -h 192.168.0.16 -p 5432 -U sonar

Вот и всё. Чтобы убедиться, что всё работает — переходим в браузер (убедитесь что 192.168.X.X сеть доступна из Вашей или воспользуйтесь links).

Наберём 192.168.0.15:9000 и Вас должно приветствовать окошко авторизации.
Логин: admin
Пароль: admin
это учётная запись админа, доступная по умолчанию.

Автор: Kerosin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js