J’ai mis à jour ma version de SonarQube dans le post SonarQube Upgrade 4.0, ce qui nous a donné l’opportunité de documenter quelques erreurs rencontrées.
J’ai voulu updater également les autres composants que sont SonarQube-Runner et Jenkins et le Monsieur Jenkins m’a causé quelques soucis.
Donc ce post va nous permettre de voir un upgrade de SonarQube-Runner et Jenkins, ainsi que de résoudre (ou contourner) les erreurs rencontrées.
Upgrade de Jenkins
Après avoir effectué l’upgrade de SonarQube en 4.0, je suis bien évidemment allé dans le portail de Jenkins afin de lancer une analyse. J’ai remarqué à cette occasion qu’il y avait une nouvelle version, et donc j’ai décidé d’en profiter pour actualiser également mon environnement Jenkins.
Par contre, contrairement à l’installation de Jenkins en service Windows que nous avions vue il y a quelques temps, je me suis dit que ce serait l’occasion d’installer Jenkins avec une install Windows, je veux dire, à partir d’un exécutable d’installation.
Je suis donc allé sur le site de Jenkins afin de télécharer le package natif Windows, qui se présente sous la forme d’un fichier compressé ‘jenkins-1.541.zip’.
Une fois celui-ci décompressé, nous nous retrouvons avec un fichier ‘setup.exe’ et un fichier d’installation ‘jenkins-1.541.msi’.
Je vais vérifier que mon service Jenkins existant est bien arrêté. Puis je vais lancer le fichier ‘setup.exe’. L’installation – en fait la mise à jour du service Windows Jenkins – passe par plusieurs étapes : ‘Installing’, ‘Validating install’, ‘Starting service’, … je vous passe les détails.
Je sais que le service a bien été mis à jour pour la bonne raison … qu’il ne se lance pas. En effet, je retrouve la même erreur que lors de notre première installation de Jenkins en service Windows, c’est-à-dire qu’il me faut changer le user Windows afin de pouvoir lancer le service correctement.
Une fois cela fait, le service Jenkins démarre sans problème, mais par contre, impossible d’afficher le portail de Jenkins à son habituelle adresse http://localhost:8080/. En fait, je vois une forte activité de mon ordinateur depuis la liste des tâches Windows, un process Java qui prend beaucoup de CPU, et ce de manière assez continue.
J’ai attendu patiemment, j’ai arrêté-relancé plusieurs fois le service Jenkins, même rebooté mon ordinateur, rien n’y fait. En fait, j’ai fini par comprendre, en naviguant à travers les différents logs de Jenkins, qu’il manquait une librairie (un fichier .jar) qui interdisait le fonctionnement correct de la webapp de Jenkins. Et que face à cet échec, celui-ci tentait de se relancer continuellement, dans une boucle infructueuse et surtout sans message d’explication du problème rencontré.
J’ai donc fini par désinstaller cette application Jenkins afin de procéder à l’installation selon la même procédure que dans notre post installation de Jenkins en service Windows, à partir d’un fichier .war. Donc je ne vais pas reprendre cette procédure d’installation par le détail, mais simplement en rappeler les grandes étapes :
- Download du fichier ‘jenkins.war’ depuis le site de Jenkins.
- Lancement de Jenkins avec la commande java -jar jenkins.war depuis une fenêtre DOS.
- Dans le portail de Jenkins (url http://localhost:8080/), menu ‘Manage Jenkins’, puis ‘Install as Windows service’.
- Une fois le service installé, je dois modifier le user Windows avec les droits suffisants pour lancer celui-ci. Cette étape est spécifique à mon portable, elle devrait être facultative pour une installation serveur de Jenkins.
- Je modifie ensuite la configuration de Jenkins (le fichier ‘jenkins.xml‘) afin de le faire pointer sur mon repository actuel, et ainsi récupérer tous les jobs d’analyse existants.
Et finalement, je peux lancer Jenkins.
SonarQube absent de Jenkins
Sauf que lorsque je veux lancer une analyse, absolument rien ne se passe. Je vais vérifier les plugins installés et le plugin pour SonarQube est bien présent dans ma configuration Jenkins actuelle. Par contre, lorsque je vais dans la page de configuration de Jenkins (menu ‘Manage Jenkins’), la partie correspondant au paramétrage de SonarQube est absente.
J’ai passé pas mal de temps et il m’a fallu diverses tentatives infructueuses (dont une ré-install du plugin SonarQube qui a eu pour conséquence la perte de mes configurations d’analyse) avant de découvrir l’erreur. Je ne sais pas comment celle-ci a pu survenir, si elle est provient de l’installation infructueuse de Jenkins avec un package natif Windows ou tout simplement d’une manipulation de ma part, mais il se trouve que le plugin ‘Maven Integration’ était désactivé. Comme je ne suis pas un Maveniste, il se peut très bien que je l’ai décoché sans m’en souvenir.
Toujours est-il qu’en réactivant ce plugin, ma configuration de SonarQube dans Jenkins est revenue, telle qu’elle était à l’origine (voir à nouveau le post d’installation de SonarQube en service Windows, ainsi que l’installation du plugins Jenkins pour SonarQube à ce sujet).
Upgrade de SonarQube-Runner
La mise à jour de SonarQube Runner n’a pas posé de problèmes. Donc à nouveau, je ne vais reprendre que les étapes principales (telles que vues dans le post d’installation de SonarQube-Runner) :
- Downloader le fichier d’installation du SonarQube Runner depuis la page Installing and Configuring SonarQube Runner, en version 2.3 dans mon cas (à la date de ce post).
- Décompresser ce fichier .zip dans un répertoire ‘sonar-runner-2.3’.
- Modifier le fichier de configuration ‘sonar-runner.properties’ afin d’indiquer la localisation de SonarQube et de notre base de données Oracle.
Dans Jenkins, nous allons à nouveau dans la page de configuration (menu ‘Manage Jenkins’) afin d’ouvir la partie consacrée à la configuration du ‘SonarQube-Runner’ et lui préciser l’emplacement de cette nouvelle version.
Voilà ! Je peux enfin relancer mes analyses, le tout avec un environnement complet à jour, depuis SonarQube, le SonarQube Runner et Jenkins.
Dernier tuyau : si vous avez perdu la configuration d’un job d’analyse sous Jenkins, vous pouvez récupérer celle-ci à partir d’un backup de votre référentiel Jenkins.
Dans celui-ci, les analyses sont localisées dans le répertoire ‘Jobs’, avec un sous-répertoire pour chaque analyse. Dans lequel vous trouverez un fichier config.xml avec la configuration du job, comme par exemple les différentes properties SonarQube indiquées en paramètres de l’analyse.
Conclusion
Quelle est l’origine des erreurs rencontrées ? Je dois dire que je n’ai pas cherché à investiguer plus avant. Mais en conclusion, nous pouvons dire que :
- L’installation du service Windows Jenkins à partir d’un fichier .war semble plus stable, même si moins naturelle, qu’à partir d’un exécutable d’installation (type setup.exe).
- Si la configuration de SonarQube a disparu de la page de configuration de Jenkins, vérifiez que vous avez bien le plugin ‘Maven Intégration’ installé. Ne me demandez pas pourquoi, je n’utilise pas Maven.
Dommage qu’aucun message d’erreur ne nous indique qu’il n’est pas possible d’effectuer une analyse car Jenkins ne sait pas localiser SonarQube. Mais au moins maintenant, si cette erreur survient, nous saurons comment la corriger.
Et enfin, nous avons vu également comment récupérer la configuration Jenkins de nos jobs d’analyse. Et notre environnement SonarQube est complètement. up-to-date. Cela valait bien un post !
Cette publication est également disponible en Leer este articulo en castellano : liste des langues séparées par une virgule, Read that post in english : dernière langue.