He actualizado mi version de SonarQube en el post anterior SonarQube Upgrade 4.0, lo que fue una oportunidad de documentar algunos errores encontrados.
También quería actualizar otros componentes como SonarQube-Runner y Jenkins. Y resulta que el Sr. Jenkins me ha causado algunos problemas.
Así que veamos en este post como hacer un upgrade a SonarQube-Runner y Jenkins, y como resolver (o evitar) los errores encontrados.
Upgrade de Jenkins
Después de completar la actualización de SonarQube en 4.0, por supuesto que fuí en el portal de Jenkins para realizar un análisis. Me di cuenta en ese momento de que había una nueva versión de Jenkins, por lo que decidí hacer también este upgrade.
Pero esta vez, pensé hacerlo de manera diferente de la instalación de servicio Windos de Jenkins, es decir, sin emplear un ficher .war pero con un ejecutable de instalación.
Por lo tanto, vamos en el sitio web de Jenkins para descargar el paquete Windows, en forma de un fichero comprimido ‘jenkins-1.541.zip’.
Una vez descomprimido, tenemos dos ficheros ‘setup.exe’ y ‘jenkins-1.541.msi’.
Primero voy a comprobar que mi actual servicio Jenkins está parado. Luego empiezo la instalación – bueno, la actualización del servicio Jenkins – con el ‘setup.exe’. Pasamos por diferentes etapas : ‘Installing’, ‘Validating install’, ‘Starting service’, … sin entrar en los detailles.
Yo sé que el servicio ha sido actualizado por la buena razón que … no arrenca. De hecho, encontramos el mismo error de instalación del servicio Windows de Jenkins, es decir que tengo que cambiar el usuario Windows para iniciar el servicio correctamente.
Una vez hecho esto, el servicio de Jenkins arranca sin problema, pero es imposible visualizar el portal Jenkins en la dirección habitual http://localhost:8080/. De hecho, veo una fuerte actividad de mi ordenador en la lista de tareas de Windows, un proceso de Java que necesita una gran cantidad de CPU, y eso continualmente.
Esperé pacientemente, reinicié varias veces el servicio Jenkins, incluso mi equipo: pero el portal Jenkins no arranca. Finalmente, navegando en los diversos logs de Jenkins, he llegado a entender que faltaba una libraria (un archivo .jar) que prohibía el funcionamiento correcto de la webapp Jenkins. Y este trata de reiniciarse continuamente en un bucle sin fín y sin mensaje de fallo o de explicación del problema.
Así que terminé de desinstalar la aplicación Jenkins para luego reinstalar el servicio, usando el mismo procedimiento que en el post instalación de servicio Windos de Jenkins, desde un archivo .war. Entonces no voy a repetir este procedimiento en detalle, sino simplemente recordar los pasos principales:
Una vez instalado el servicio, tengo que cambiar el usuario de Windows con derechos suficientes para ejecutarlo . Este paso es específico para mi portátil, debería ser opcional para una instalación de servidor de Jenkins.
Entonces puedo cambiar la configuración de Jenkins (archivo ‘ jenkins.xml ‘) para hacer que apunte a mi repositorio actual , y recuperar todos los jobs de análisis existentes.
Y, por último, puedo empezar Jenkins.
- Download del fichero ‘jenkins.war’ desde el sitio Jenkins.
- Arrancar Jenkins desde este fichero .war con el comando java -jar jenkins.war en una ventana DOS.
- En el portal Jenkins (url http://localhost:8080/), menú ‘Manage Jenkins’, luego ‘Install as Windows service’.
- Una vez instalado el servicio, tengo que cambiar el usuario de Windows por uno con derechos suficientes para ejecutarlo. Este paso es específico para mi portátil, debería ser opcional para una instalación Jenkins en un servidor.
- Puedo cambiar la configuración de Jenkins (en el archivo ‘jenkins.xml‘) para hacer que apunte a mi repositorio actual, y recuperar todos los jobs de análisis existentes.
Y finalmente, puedo arrancar Jenkins.
SonarQube falta en Jenkins
Ahora, cuando quiero ejecutar un análisis, no pasa nada. Voy a comprobar los plugins instalados y el plugin para SonarQube está presente en mi configuración. Pero, cuando voy a la página de configuración de Jenkins (menú ‘Manage Jenkins’), la parte correspondiente a la configuración de SonarQube en Jenkins está ausente.
Pasé un montón de tiempo y necesité varios intentos fallidos (incluyendo una re-instalación del plugin SonarQube que resultó en la pérdida de mis configuraciones de análisis) antes de descubrir el error. No sé cómo pudo ocurrir, si se deriva de la instalación incorrecta de Jenkins con un paquete Windows nativo, o simplemente si resulta de una manipulación de mi parte, pero es el plugin ‘Maven Integración’ ha sido deshabilitado. Como no soy un Maveniste, bien puede que lo deseleccioné yo sin darme cuenta.
Después de reactivar el plugin, la configuración de mi SonarQube en Jenkins regresó como estaba al principio (vér de nuevo los posts de instalación del servicio SonarQube y la instalación del plugin SonarQube para Jenkins).
Upgrade del SonarQube-Runner
La actualización del SonarQube Runner no ha sido un problema. Así que de nuevo, voy a presentar los pasos principales (para más detalles, se puede ver el post de instalaciónn de SonarQube-Runner):
- Descargar el fichero de instalación del SonarQube Runner desde la pagina Installing and Configuring SonarQube Runner, en la versión 2.3 en mi caso.
- Descomprimir el fichero .zip en una carpeta ‘sonar-runner-2.3’.
- Modifcar el fichero de configuración ‘sonar-runner.properties’ para indicar la ubicación de SonarQube y nuestra base de datos de Oracle.
En Jenkins, volvemos en la pagina de configuración (menú ‘Manage Jenkins’) en la parte del ‘SonarQube-Runner’ para precisar donde se encuentra esta nueva versión.
Voilà ! Por fin puedo volver a mis análisis, con un entorno completamente up-to-date, SonarQube, SonarQube Runner y Jenkins.
Por último consejo: si una vez pierdes la configuración de un job de análisis en Jenkins, puedes recuperarlo desde un backup de tu repositorio Jenkins.
En esta copia de seguridad, los análisis están localisados en la carpeta ‘Jobs’, con un sub-directorio por cada análisis. Ahi encontrarás un fichero config.xml con la configuración del job, como por ejemplo, los diferentes properties SonarQube en parametro del análisis.
Conclusión
¿Cuál es el origen de los errores encontrados? Debo decir que no intenté investigar más a fondo. Pero en conclusión, sabemos que:
- Instalar el servicio Windows de Jenkins parece más estable con un archivo .war, aunque menos natural que desde un ejecutable de instalación (tipo setup.exe).
- Si la configuración de SonarQube desaparece de la página de configuración de Jenkins, comprobar que tenemos el plugin ‘Maven Integration’ instalado. No me preguntes por qué, yo no uso Maven.
Lástima no tener un mensaje de error que nos dice que es imposible llevar a cabo un análisis porque Jenkins no sabe localizar a SonarQube. Pero por lo menos ahora, si se produce este error, sabemos cómo corregirlo.
Y, por último, también hemos visto cómo recuperar la configuración Jenkins de nuestros análisis. Y nuestro entorno SonarQube es completo, up-to-date y operacional. Eso bien vale un post!
Esta entrada está disponible también en Lire cet article en français y Read that post in english.