Hace unos días vi un twit de Codefresh, donde incluso retuitee que la versión usada para su demostración era la de Pago SonarCloud y no SonarQube, por lo que retuitee que si se exponía la instalación gratuita de SonarQube tendría el mismo resultado.
Code analysis made easy with the Codefresh’s @SonarQube integration — view the analysis report after every build ? https://t.co/lg3VW2hFZO#DevOps #codeanalysis #testing @urlichsanais pic.twitter.com/SkWJab3mKD
— Codefresh (@codefresh) December 2, 2020
Así que me dí a la tarea de integrar el escaneo de código de uno de los proyectos asignados para confirmar la integración sugerida.
El documento en inglés de Codefresh puedes encontrarlo en Continuous Code Analysis with SonarQube and Codefresh, lo revise y por supuesto que tiene algunos detalles por resolver, en este artículo describí que implemente SonarQube para escanear el código de los proyectos que me son asignados y que había implementado un Script en Bash para hacer el escaneo, algo manual por supuesto, por lo que hacer esto en el pipeline dejaría sin efecto a mi Bash Script, algo que ansiaba hacer en el corto plazo.
Por lo que describiré aquí cómo fue que lo implemente.
Creando el proyecto en SonarQube.
Si aún no has instalado SonarQube, te recuerdo que puedes hacerlo usando Docker, mas información en Install the Server.
- Para evitar “conflictos” y evitar “mirones” genere un nuevo Grupo y le asigne permisos únicamente para que el Administrador o Usuario indicado pueda ver este proyecto.
- Genere el proyecto siguiendo el asistente de SonarQube y le asigne un Token para que desde Codefresh pueda usarlo.

Creando Proyecto en Sonarqube

Proyecto Creado SonarQube
Integrando el Plugin al Pipeline del proyecto en Codefresh.
Este fue uno de los pasos de mayor atención, ya que mis pipelines toman las configuraciones de un repositorio adicional, por lo que tuve que adicionar un Plugin solo para copiar el archivo sonar-project.properties
en la raíz del proyecto.

Integración Plugin Pipeline Codefresh
La hora de la verdad, ejecutando el pipeline manualmente.
Aquí es donde veremos si realmente funciona la teoría, claro que la ejecución final tuvo como antecesores varias pruebas para darnos cuenta que debido a la configuración que tomamos por separado no obtenía la propiedad sonar.projectKey
necesaria para identificar al proyecto en nuestro SonarQube.
En la imagen podemos ver la ejecución exitosa de nuestro pipeline, en el log del paso QUALITY podemos ver el ID de la Tarea (Task) la cual es AXY_dPYDfvCgCTUgh8X4
y debe coincidir con la tarea en el “fondo” (background) en nuestro escritorio, sección de tareas de SonarQube.

Ejecución Pipeline SonarQube Codefresh
Comprando en la cola de SonarQube la tarea de escaneo.
Como lo anticipe en mi retuit, mencionando que usaban SonarCloud y que si exponían su instalación de SonarQube se podría hacer lo mismo que se indica en el Howto.
Así que vayamos a ver el Dashboard de SonarQube, he puesto en rojo el ID de la Tarea (Task) en la imagen para su rápida identificación.

Tareas en Background SonarQube
Efectivamente podemos ver que la tarea del análisis lanzada desde Codefresh se esta ejecutando en mi instancia de SonarQube y al finalizar puedo revisar la calidad del código del proyecto.

Escritorio Proyecto SonarQube
Con esto comprobamos la integración del escaneo de código usando SonarQube lanzado desde un pipeline en Codefresh.
Si necesitas ayuda puedes contactarme en este enlace.
Comments are closed