Cómo montar un servidor con SonarQube

Dentro la mejora de calidad que podemos acometer para nuestros proyectos, podemos identificar en la mejora de la seguridad el refactor de código para hacerlo más sostenible, adaptar flujos DevOps en nuestro desarrollo, apoyarnos en herramientas que nos ayuden a realizar todas estas tareas de forma sencilla… Hoy, hemos venido a hablar sobre algo que hace todas estas cosas, ¿no es increíble?

Como ya sabrás, si no lo has adivinado todavía (viendo el título del artículo seguro que ya lo habías hecho), estamos hablando de SonarQube.

¿Qué es SonarQube?

SonarQube es una plataforma de código abierto para el análisis de la calidad de código usando reglas, ya sean predefinidas o custom. Actualmente tiene 2 versiones, una versión OnPremise (la de toda la vida) y una versión Cloud.

SonarQube es esencial para mantener la calidad de nuestros desarrollos, por la indecente cantidad de reglas de análisis estático de código que tiene, por la facilidad de incorporar esos análisis en un Pipeline de Azure Devops y estar siempre al tanto de la calidad de nuestro software.

Una de las ventajas que tiene SonarQube es que, al ser código abierto, tiene gran cantidad de plugins desarrollados por la comunidad. En esta web tienes un buscador de todos los plugins disponibles para SonarQube.

Pero, como estamos seguros de que te quieres poner manos a la obra, vamos a explicar paso a paso cómo instalar SonarQube en un servidor OnPremise para poder trastear con el como dios manda.

Primero, en nuestra demo, para hacerlo de la forma más sencilla posible, usaremos una máquina virtual de Azure para la instalación.

Para la instalación, usaremos una template de Azure, nos dirijiremos a esta dirección y pulsaremos en “Deploy en Azure”.

Cómo montar un servidor con SonarQube

Se nos abrirá para seleccionar la cuenta de Azure donde vamos a realizar la instalación.

Una vez en nuestra cuenta, introduciremos los datos en la plantilla, para que se empiece a desplegar.

Primero seleccionaremos el grupo de recursos que queramos o crearemos uno nuevo.

Cómo montar un servidor con SonarQube

En el resto de datos pondremos un ejemplo de valores, pero pueden ser los que mejor se adapten a tus necesidades.

Cómo montar un servidor con SonarQube

Una vez introduzcamos todos los valores, pulsaremos en “Adquirir” y se realizará una validación para comprobar que todos los nombres y valores son correctos para la implementación.

Cuando esté acabada la implementación, veremos que se han creado los recursos en nuestro grupo de recursos.

Cómo montar un servidor con SonarQube

Que, resumiendo, sería la máquina virtual con la base de datos necesaria y configurada con nuestro SonarQube.

Una vez terminado este proceso, los creadores de la plantilla nos dicen que entremos en la máquina virtual (con las credenciales que hemos creado) pro RDP, e instalemos Java JDK 8 desde este enlace y reiniciemos el servicio de SonarQube desde “Servicios”.

Cómo montar un servidor con SonarQube
Cómo montar un servidor con SonarQube

Una vez que se reinicie el servicio, esperaremos un poco para que se reinicien todos los servicios, antes de entrar en nuestro sonar.

Cómo montar un servidor con SonarQube

Ahora ya podremos configurar nuestras pipelines de Azure Devops para que ejecuten el informe de nuestro código.

Para ello, primero tendremos que crear un token para analizar un nuevo proyecto, entramos en nuestra página de SonarQube que acabemos de instalar y pulsamos en “Analyze new proyect”.

Cómo montar un servidor con SonarQube

Generamos un nuevo token y nos lo guardamos para usarlo luego. En el paso 2 le diremos qué lenguaje vamos a analizar; por ejemplo “C#”. Por último, definiremos una key para identificar nuestro proyecto de forma única.

Ahora sí, nos dirijiremos a nuestro proyecto de Azure Devops, que contiene el proyecto que queremos analizar.

Pulsaremos en “Pipelines” y “New Pipeline”.

Cómo montar un servidor con SonarQube

Seleccionaremos en “Visual Designer” como opción y el repositorio y rama que queremos analizar.

Seleccionaremos la template que más se ajusta a nuestro proyecto, como era un proyecto de C#, seleccionaremos “.Net Desktop” por ejemplo.

Una vez dentro de la creación de la Build, añadiremos un nuevo Step, pulsando en el “+”.

Cómo montar un servidor con SonarQube

En el buscador buscamos “sonar” y aparecerán las tasks para configurar Sonar.

Cómo montar un servidor con SonarQube

Si no apareciera como extensión instalada, habría que instalarla desde el Marketplace.

La primera Tarea que seleccionaremos es “Prepare Analysis Configuration”, que habría que poner antes de que haga la compilación nuestra Build.

Cómo montar un servidor con SonarQube

Dentro de la configuración de la tarea, habría que configurar lo siguiente:

Lo primero, sería crear un service connection, para ello pulsamos en “Manage”:

Cómo montar un servidor con SonarQube

Desde aquí crearíamos un service connection para nuestro sonar:

Cómo montar un servidor con SonarQube

Le ponemos un nombre, el server url sería nuestro server que hemos instalado, y el token que hemos generado en nuestro sonar al principio.

Cómo montar un servidor con SonarQube

Si volvemos a nuestra Build, ahora nos aparecerá en el listado de endpoint, el service connection que hemos creado.

Cómo montar un servidor con SonarQube

Le pondremos la key que hemos puesto en el sonar, en el proyecto name, el nombre que le hemos dado al proyecto en sonarQube.

Cómo montar un servidor con SonarQube

Ahora tendríamos que añadir la siguiente Task, añadiremos otro Step, buscando por sonar de nuevo, pero seleccionando “Run Analysis”. En este caso no configuraremos nada, y lo pondremos después de hacer la compilación.

Cómo montar un servidor con SonarQube

En tercer lugar, añadimos otro step, añadiendo la tercera opción que nos queda en el sonar: “Publish Quality Gate Result”.

Cómo montar un servidor con SonarQube

Con esto ya tendríamos configurado nuestro SonarQube en nuestra Build.

Una vez que se lance la build, ya podríamos ir a nuestro SonarQube y ver el análisis de código de nuestro proyecto, donde podremos realizar filtros y ver las mejoras que podemos hacer a nuestro código para que cumpla unos mínimos de calidad.

Cómo montar un servidor con SonarQube
Cómo montar un servidor con SonarQube

Hasta aquí el post de hoy, donde hemos visto paso a paso cómo crear nuestro servidor de SonarQube y, lo más importante, cómo integrarlo dentro de un Pipeline de Azure Devops, para que cada vez que se haga un commit del código sepamos el estado de nuestro proyecto y podamos tomar medidas de forma rápida si algo no nos cuadra o no se están realizando las cosas como nos gustaría.

Autor: Alberto Picazo Backend y Azure DevOps Technical Lead