Instalar SonarQube en Debian

  • Time to read 3 minutes
SonarQube Installation

SonarQube es una herramienta de análisis estático de código. Extrae métricas con las que se puede obtener una percepción objetiva de la calidad del código que hemos desarrollado. Es capaz de detectar vulnerabilidades, agujeros de seguridad, código "smell", antipatrones etc...

Es una herramienta de software libre que requiere la preinstalación de una serie de requisitos, y cuyo proceso completo de configuración puede parecer algo engorroso. Te pondré aquí los pasos a seguir para su instalación en SO Debian. Todos los pasos aquí indicados presumen que la ejecución se está llevando a cabo como usuario root. En caso contrario, las tareas administrativas deberán precederse de sudo.

Pre-Requisito 1 - Instalación de Java

Para instalar el JDK de la última versión de Java ejecutaremos:

apt-get install default-jdk

Pre-Requisito 2 - Instalación de Sql Server

En primer lugar, debemos instalar los repositorios de Microsoft en Debian:

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list | tee /etc/apt/sources.list.d/mssql-server.list
apt-get update
apt-get install -y mssql-server

Posteriormente ejecutaremos el script de instalación y configuración de SQL Server

/opt/mssql/bin/mssql-conf setup

Seleccionar las siguientes opciones:

  • Tipo de licencia: 3 (Express). En caso de tener alguna licencia de pago, usar licencia de pago
  • Aceptar contrato: Yes
  • Introducir la contraseña de administrador

Reiniciamos el servicio mediente:

systemctl restart mssql-server.service

Posteriormente instalaremos las herramientas de línea de comandos de SQL Server. Añadiremos además estas herramientas al PATH para que estén accesibles desde cualquier carpeta:

curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
apt-get update
apt-get install mssql-tools unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

Abriremos la sesión de SQL Server. Usaremos la contraseña de administrador indicada en la ejecución del proceso de configuración.

sqlcmd -S localhost -U SA -P <contraseña_administrador>

Ejecutaremos los siguientes comandos para crear la configuración necesaria para Sonar

EXEC sp_configure 'CONTAINED DATABASE AUTHENTICATION',1
GO
RECONFIGURE
GO
CREATE DATABASE sonar COLLATE SQL_Latin1_General_CP1_CS_AS
GO
USE sonar
GO
CREATE LOGIN sonarqube WITH PASSWORD = '<contraseña_usuario_sonarqube>'
GO
CREATE USER sonarqube FOR LOGIN sonarqube
GO
CREATE SCHEMA sonar AUTHORIZATION sonarqube
GO
GRANT SELECT,INSERT,UPDATE,DELETE,ALTER ON SCHEMA ::dbo TO sonarqube
GO
ALTER DATABASE sonar SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE
GO

Instalación de SonarQube

En primer lugar deberemos obtener el ZIP con el software. Debemos tener en cuenta que la versión 8.2.0.32929 es la disponible en el momento de redacción de este artículo. Se deberá revisar la versión disponible en el momento de la lectura para descargar la versión más reciente.

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

Creación de un usuario (usr_sonar) y grupo (grp_sonar) Linux específico para Sonar

groupadd grp_sonar
mkdir /home/sonar
useradd -c "Sonar user" -d /home/sonar/ -g grp_sonar -s /bin/bash usr_sonar

Movemos el fichero descargado a la carpeta del usuario usr_sonar, lo descomprimimos y asignamos todos los archivos al usuario Sonar

mv ~/sonarqube-8.2.0.32929.zip /home/sonar
cd /home/sonar
unzip sonarqube-8.2.0.32929.zip
chown -R usr_sonar:grp_sonar /home/sonar

Modificaremos el fichero conf/sonar.properties.

El dato <contraseña_usuario_sonarqube> es la contraseña especificada en la configuración de SQL Server para Sonar. El dato <puerto> nos permite definir un puerto para acceder a la aplicación desde el navegador. Por defecto es 9000. El dato <sub_ruta_a_aplicacion> permite establecer una ruta para añadir a la ruta base en la URL para llamar a SonarQube desde el navegador.

Es posible que se deban descomentar algunas de las opciones quitando #

sonar.jdbc.username=sonarqube
sonar.jdbc.password=<contraseña_usuario_sonarqube>
sonar.jdbc.url=jdbc:sqlserver://localhost;databaseName=sonar
sonar.web.port=<puerto>
sonar.web.context=<sub_ruta_a_aplicacion>

Posteriormente modificaremos el fichero bin/linux-x86-64/sonar.sh.

Es posible que se deban descomentar algunas de las opciones quitando #

RUN_AS_USER=usr_sonar

Copiaremos el fichero sonar.sh a /etc/init.d/sonar

cp bin/linux-x86-64/sonar.sh /etc/init.d/sonar

Crearemos la carpeta del daemon

mkdir /var/run/sonardaemon
chown usr_sonar:grp_sonar /var/run/sonardaemon

Modificaremos el fichero /etc/init.d/sonar.

SONAR_HOME="/home/sonar/sonar"
PLATFORM="linux-x86-64"
WRAPPER_CMD="${SONAR_HOME}/bin/${PLATFORM}/wrapper"
WRAPPER_CONF="${SONAR_HOME}/conf/wrapper.conf"
PIDDIR="/var/run/sonardaemon"

Finalmente, eliminamos los startup links, ajustamos permisos y reiniciamos

update-rc.d -f sonar remove
chmod 755 /etc/init.d/sonar
update-rc.d sonar defaults

Arrancamos SonarQube

/etc/init.d/sonar start

Esta ejecución debería dar los siguientes mensajes:

Starting SonarQube...
Started SonarQube.

En caso de que no aparezca el mensaje Started SonarQube, se deberán revisar los logs sonar.log, es.log y web.log.

Se puede consultar el estado de SonarQube mediante el comando:

/etc/init.d/sonar status

Esto debería devolver un mensaje similar al siguiente:

SonarQube is running (13268).

Ya podremos acceder a nuestro SonarQube mediante un navegador de Internet, usando el puerto y ruta indicados en el fichero de configuración. Imaginemos que sonar.web.port tenga el valor 10000sonar.web.context tenga el valor /sonarqube. Suponiendo que estemos trabajando en localhost, accederemos mediante:

http://localhost:10000/sonarqube