Muchas veces tenemos que hacer una prueba de concepto de herramientas que no tenemos disponibles, o licencias en ese momento, y por ello hay que buscarse la vida para dar una respuesta ágil y barata, ya que se trata de una Spike, auto-aprendizaje o simple cacharreo.
Para ello, hoy voy a comentar como podemos tener un SonarQube no productivo en 10 minutos.
Muchos, habréis intentado instalarlo en local con una BBDD o en Cloud, aquí os voy a exponer la alternativa más rápida para tenerlo operativo. Todo ello, gracias a Santiago Macías Rodríguez que es el que me indicó el camino. Es también autor de En Mi Local Funciona y además me abrió las puertas a su propio blog https://santimacnet.wordpress.com/.
Antes de nada, ¿qué es SonarQube? Si no lo conoces:
SonarQube es una herramienta de análisis estático de código que ayuda a monitorizar el código de los sistemas, facilitando la detección y corrección de defectos y vulnerabilidades y fomentando la mejora continua de la calidad del código.
¿Dónde la vamos a montar?
En Azure Container Instances (ACI).
¿Qué infraestructura vamos a desplegar?
ACI con 2 CPUs y 4 MB, según lo indicado en https://docs.sonarqube.org/latest/requirements/requirements/
SonarQube se ejecutará en un contenedor sin persistencia de la información en volúmenes o BBDD, por lo que no es válido para entornos de producción, ya que se perdería la información guardada en los proyectos de SonarQube al ser escrita en ficheros de "log", por entendernos.
Paso 1 - Crear cuenta de Azure
Se obtiene un crédito de €170 que se puede gastar durante los primeros 30 días.
https://azure.microsoft.com/es-es/
https://azure.microsoft.com/es-es/free/
Para ello, te pedirá una tarjeta de crédito, donde no permite tarjetas prepago (Si, yo también lo intenté ;-) ).
Hay que tener cuidado con los cobros por despistes: Backups, seguridad, servicio técnico. Desacrivar y no contratar todos los servicios imprescindibles.
Paso 2 - Crear grupo de recursos
Dirígete a Inicio - Grupo de Recursos - Crear Grupo de recursos
Paso 3 - Habilita una Cloud Shell (Bash)
Azure te informará que la tienes que crear vinculada a un grupo de recursos (paso anterior)
Una vez, vinculada se verá así:
Paso 4 - Creación de contenedor e instalación de SonarQube
Introduce estos comandos (uno a uno) en la shell:
RG=rg-SonarQubeDemo-ne LOCATION=northeurope
ACI_NAME=aci-sonarqube
SONARQUBE_IMAGE=sonarqube
SONARQUBE_PORT=9000
SONARQUBE_FQDN=spike-sonarprueba
az group create --name $RG --location $LOCATION
az container create --resource-group $RG --name $ACI_NAME --cpu 2 --memory 4 --image $SONARQUBE_IMAGE --ports $SONARQUBE_PORT --dns-name-label $SONARQUBE_FQDN
El último comando 'az container...' es largo y acaba en $SONARQUBE_FQDN
Paso 5 - Abrir el frontal de SonarQube
La URL es la que hemos generado en el paso 4:
http://spike-sonarprueba.northeurope.azurecontainer.io:9000/
El usuario/password de acceso inicial es: admin/admin
Al loguearse, pide cambiar la password. Tras ello, ya tendremos acceso a SonarQube:
Hasta aquí los 10 minutos de instalación, los pasos siguientes son en función del lenguaje pero los comento a alto nivel para posteriormente desarrollarlos en profundidad en próximos post:
Otro procedimiento de instalación de SonarQube es el expuesto por Víctor Madrid en el post Acelerando los desarrollos con contenedores : SonarQube, el cual se realiza mediante Docker.
Paso 6 - Descarga, Instalación y configuración del scanner según el lenguaje de desarrollo (Java, .NET, JavaScript, etc)
Este paso se desarrolla más a fondo en el siguiente post 'SonarQube: Ejecución de análisis e inspección continua', de este mismo blog.
En Modo Exprés --> Mediante el Cloud Shell (Bash):
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
Por ejemplo, la configuración en .NET Framework sería:
`SonarScanner.MSBuild.exe begin /k:"nombre-app" MSBuild.exe /t:Rebuild
SonarScanner.MSBuild.exe end`
Paso 7 - Creación del usuario y generación de Token
Para poder realizar una conexión segura entre nuestro proyecto y SonarQube, al ejecutar el análisis:
Paso 8 - Ejecución del análisis
Se puede realizar mediante comando o automatizado mediante Jenkins o cualquier moto de IC:
Paso 9 - Análisis e interpretación
Accedemos de nuevo a nuestro dashboard y se mostrarán los resultados del análisis
http://spike-sonarprueba.northeurope.azurecontainer.io:9000/
Espero que haya servido de ayuda, y permita explorar SonarQube, Azure, Contenedores sin invertir demasiado tiempo.
En los siguientes post, profundizaré en SonarQube explicando las métricas que explota, cómo calcula el Rating, las configuraciones que permite y finalmente la ejecución de análisis y la inspección continua.
Si te ha gustado, ¡síguenos en Twitter para estar al día de próximos posts!