Configurar Sonarqube¶
Fuentes
Requirements¶
Java (Oracle JRE 11 or OpenJDK 11)
PostgreSQL 10 or 9.3–9.6
su -
OpenJDK lasted¶
Requiere JDK 11+.
Esto instala OpenJDK 14.
dnf install java-latest-openjdk
Cambiar java por defecto.
alternatives --config java
Postgresql¶
psql -U postgres
CREATE USER sonar WITH PASSWORD '123456';
CREATE DATABASE sonar WITH OWNER sonar;
\q
Configuracion del sistema¶
El usuario que ejecuta Sonarqube puede abrir al menos 65536 descriptores de archivo. El usuario que ejecuta Sonarqube puede abrir al menos 4096 hilos.
vim /etc/sysctl.conf
vm.max_map_count=262144
fs.file-max=65536
Aplicar la configuración
sysctl -w vm.max_map_count=262144
Sonarqube¶
Descomprimir Sonarqube.
unzip sonarqube-8.3.1.34397.zip
sudo mv sonarqube-8.3.1.34397 /opt/sonarqube
SELinux
/sbin/restorecon -v /opt/sonarqube/bin/linux-x86-64/sonar.sh
chcon -t httpd_sys_content_t /opt/sonarqube/web
Editar configuración de Sonarqube.
sudo vim /opt/sonarqube/conf/sonar.properties
# linea 18 y 19
sonar.jdbc.username=sonar
sonar.jdbc.password=123456
# linea 36
sonar.jdbc.url=jdbc:postgresql://localhost/sonar
# linea 102
sonar.web.host=0.0.0.0
# linea 108
sonar.web.port=9000
# linea 406
sonar.path.data=/var/sonarqube/data
# Linea 407
sonar.path.temp=/var/sonarqube/temp
Crear usuario de sistema.
sudo useradd -r -s /bin/false sonar
passwd sonar
chown -R sonar:sonar /opt/sonarqube
mkdir -p /var/sonarqube/data
mkdir -p /var/sonarqube/temp
chown -R sonar:sonar /var/sonarqube
Systemd service¶
vim /etc/systemd/system/sonarqube.service
[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
LimitNOFILE=65536
LimitNPROC=4096
User=sonar
Group=sonar
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable sonarqube.service
systemctl start sonarqube.service
Web Server Logs.
tail -f /opt/sonarqube/logs/sonar.log
ElasticSearch logs.
tail -f /opt/sonarqube/logs/es.log
Compute Engine logs.
tail -f /opt/sonarqube/logs/ce.log
Nginx configure reverse proxy¶
dnf install -y nginx
systemctl start nginx
systemctl enable nginx
TODO: Añadir certbot.
vim /etc/nginx/conf.d/sonarqube.conf
server {
listen 80;
server_name sonar.local;
access_log /var/log/nginx/sonar.local-access.log;
error_log /var/log/nginx/sonar.local-error.log;
location / {
proxy_pass "http://127.0.0.1:9000";
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Editar hosts.
vim /etc/hosts
127.0.0.1 sonar.local
Sonar-scanner¶
dotnet tool install --global dotnet-sonarscanner
Script sh¶
#!/bin/bash
# Requiere dotnet-sonarscanner.
# dotnet tool install --global dotnet-sonarscanner
APP_ROOT="$(dirname "$(dirname "$(readlink -fm "$0")")")"
# WebApi
cd $APP_ROOT/webapi
dotnet sonarscanner begin \
/k:"6bd9325c-d346-48b5-ab33-4993b61d1567" \
/d:sonar.host.url="http://sonar.local" \
/d:sonar.login="8ba567a58f7dff6a80e28e5167bb48a59e75b9dc"
dotnet build NetClock.sln
dotnet sonarscanner end /d:sonar.login="8ba567a58f7dff6a80e28e5167bb48a59e75b9dc"
# WebApp
cd $APP_ROOT/webapp
sonar-scanner \
-Dsonar.projectKey=NetClockApp \
-Dsonar.sources=. \
-Dsonar.host.url=http://sonar.local \
-Dsonar.login=8ba567a58f7dff6a80e28e5167bb48a59e75b9dc