Blog>

Roi Sánchez
15 May 2023

Problema con repositorio de AzureDevOps en SonarCloud

Tiempo de lectura 6 minutos
  • azure devops
  • CI/CD
  • git
  • Integración continua
  • sonar

Sumario Después de volverte loco para conseguir que aparezca tu repositorio AzureDevOps en SonarCloud puedes seguir estos pasos para añadirlo manualmente

Situación actual usando SonarCloud

Si te pasa como a nosotros, que tienes bastantes proyectos y en muchos de ellos varios repositorios, puede llegar a ocurrirte que al intentar analizar un nuevo proyecto desde SonarCloud, éste no te aparezca. En nuestro caso tenemos más de 170 repositorios git, pero al recuperar los «repos» a añadir a git se quedaba en 166. De esto nos dimos cuenta porque quería realizar el análisis estático de un nuevo proyecto y no había forma de que lo detectara.

Parece que este es un error recurrente, ya que por lo que he visto en los foros de soporte de Sonar es algo que ocurre, tanto con SonarQuce como con SonarCloud, desde hace años. Tiene pinta de que lo solucionan y se vuelve a reproducir. Según los comentarios del equipo de soporte es un problema con el API de listado de repositorios de AzureDevOps. pero claro no tenemos la versión de Microsoft, por lo que no podemos saber de quien es 'la culpa'. Aunque tampoco es que nos aporte mucho saber a quien echarle la bronca.

Tras leer un montón de preguntas y respuestas en foros parecía que el problema se podía solucionar bajando el número de repositorios activos que tuviera que recuperar Sonar, pareciendo que 100 es el número mágico. Así, a bote pronto, no parecía muy lógico porque ya estaba recuperando 166, pero aprovechamos para deshabilitar todos aquellos repositorios obsoletos de proyectos antiguos o migrados y bajamos hasta 99. Viendo que ni por esas podíamos cargar en Sonar nuestro nuevo proyecto pasamos a la siguiente posible solución: realizar la carga manual.

Carga Manual

Aunque en principio no es la mejor opción, y el propio SonarCloud te recomienda cargar directamente el proyecto desde la sincronización, en esta casuística es la única solución que hemos encontrado.

A continuación mostramos los pasos para poder realizar la carga manual para el análisis de nuestro proyecto con Java y MAVEN. Es importante remarcar que son los pasos para un proyecto Java con Maven, ya que si el stack del proyecto es diferente los pasos cambiarían ligeramente.

Paso 1. Crear proyecto manualmente en SonarCloud

Acceder a New... (botón +) de la parte superior derecha y seleccionar «Analyze new proyect»

Si el repositorio a analizar no aparece en el listado se debe pinchar en «create a new project manually» a la derecha del selecor de organización.

El siguiente paso es indicar un nombre único para el proyecto y nombre que se debe utilizar para mostrarse en los listados de SonarCloud

Paso 2. Crear token de seguridad en SonarCloud

Navega a la configuración de tu cuenta en SonarCloud.

Accede a la pestaña de «Security», introduce un nombre descriptivo para el token y genera un nuevo token.

Copia el token al portapapeles.

Paso 3. Crear service connector en Azure DevOps

Vete a tu proyecto en Azure DevOps > Project settings.

Acceder a Service connections

Crear un nuevo service connection de tipo SonarCloud

Introducir el token copiado en el portapapeles y darle un nombre a service connection.

Paso 4. Crear pipeline de CI

Acceder a tu proyecto en Azure DevOps > Crear una nueva pipeline > Seleccionar Azure Repos Git > Seleccionar el repositorio a analizar > Seleccionar MAVEN

Se crea un pipeline inicial. Lo cambiaremos por el siguiente pipeline que incluye el proceso de maven para Sonar.

Debemos incluir la project key y project name creados en el momento de crear el proyecto en Sonar y en el valor de configuración de SonarCloud incluir el nombre del service connector creado anteriormente,

Guardamos la pipeline y la ejecutamos.

Al ejecutar la pipeline analizará el proyecto y ya estará configurado en Sonar.

Paso 5. Comprobar análisis inicial en Sonar

Acceder en SonarCloud a «My projects» y debes poder visualizar el análisis del proyecto.

Conclusiones

Esperamos que hayas podido la encontrar solución con estos sencillos pasos. Si utilizas SonarCloud y te interesa conocer más acerca de esta herramienta, quizá te pueda interesar este artículo: Cobertura de código con PHP usando AzureDevOps y SonarCloud.

Autor

Roi Sánchez
Roi Sánchez

Desarrollador en dev&del

Capitán en Hello, World!

Capaz de gestionar un proyecto informático E2E (de principio a fin).

Los discos de vinilo y los tatuajes son dos de sus mayores pasiones.

¿Estás interesado?

Déjanos tus datos y contactaremos contigo lo antes posible