Comme je vous en ai déjà parlé, SonarQube ne sera prochainement plus disponible pour Tomcat mais uniquement en tant que service Windows. Ce qui veut dire que je vais devoir migrer ma plate-forme SonarQube / Jenkins.
Ce qui amène certaines questions: vais-je perdre ma configuration ? Vais-je perdre mes analyses ? SonarQube utilise une base de données pour stocker les résultats d’analyse, donc nous pouvons espérer conserver celles-ci et leur historique.
Mais qu’en est-il de ma configuration SonarQube ? Vais-je devoir réinstaller les plugins ? Bon sang, oú ai-je mis les clés des licences pour ces plugins ? Et mes Quality Profiles ? Sont-ils stockés dans la base de données ou dans un fichier ?
Dans quel ordre dois-je procéder: d’abord migrer Jenkins puis vérifier s’il est toujours capable de reconnaître SonarQube et de poursuivre les projets existants ? En fait, j’ai commencé ainsi mais pour ce blog, je vais commencer par migrer SonarQube, car c’est de loin plus simple que pour Jenkins.
Nous aurons l’occasion de poursuivre ensuite avec ce dernier, afin de nous débarrasser définitivement de Tomcat.
Migrer SonarQube vers un service Windows
Objectifs
Notez que je vais migrer ma version actuelle de SonarQube, une 3.5.1. Il existe une version 3.7 plus récente… à l’heure où j’écris ces lignes car cela change très rapidement. L’équipe de SonarSource est réellement très productive. Cette dernière version présente beaucoup de fonctionnalités nouvelles, mais ce sera l’objet de futurs posts.
Ce sera également l’occasion de vérifier comment effectuer un upgrade de version de SonarQube en tant que service. Si ce sujet vous intéresse, nous avons vu comment effectuer un tel upgrade il y a déjà plus d’un an, dans ce post : Upgrade Sonar.
Je vais également me limiter à une migration de SonarQube, en fait une installation en tant que service Windows, et vérifier que je peux continuer à travailler avec mon référentiel existant: mon tableau de bord, mes analyses, mes configurations, etc. Nous verrons dans le prochain post les modifications à effectuer dans mon actuel Jenkins (sous Tomcat) afin de travailler avec ma nouvelle installation SonarQube en service Windows.
Documentation
Comme tout bon informaticien, je ne lis jamais les docs, et surtout pas celles d’installation. Je trouve assez peu naturel qu’un logiciel ne sache pas s’installer tout seul et nécessite de parcourir au préalable un manuel. Cependant, comme je n’encourage pas à faire de même, voici le lien vers le site SonarSource: http://docs.codehaus.org/display/SONAR/Running+SonarQube+as+a+Service+on+Windows.
Bon, cela a l’air super-simple :
Installation
Je vais d’abord commencer par arrêter Tomcat, afin d’être sûr de ne pas travailler avec mon instance SonarQube existante (sous Tomcat).
Ensuite, j’ouvre une fenêtre DOS afin de me positionner dans le répertoire de mon installation SonarQube.
Ma version actuelle de SonarQube est donc une 3.5.1. Dans le répertoire \sonar-3.5.1\bin, je trouve deux sous-répertoires ‘windows-x86-32’ et ‘windows-x86-64’, ce dernier pour une installation Windows 64 bits.
Je ne rentre pas dans les détails de ce que fait ce programme .bat. Nous allons simplement suivre la recommandation de la doc et lancer ce programme en tant qu’Administrateur.
C’est très rapide. Sous la fenêtre des services Windows, je note l’apparition du service Sonar.
Je peux lancer ce service, soit par un ‘Start’ de celui-ci depuis cette même fenêtre des services Windows, soit en exécutant le fichier correspondant dans le répertoire ‘bin’ de SonarQube, depuis la fenêtre DOS.
Dans ce dernier cas, j’obtiens le message d’erreur suivant :
Pareil au niveau des services, si j’essaye de faire un Start de SonarQube:
En fait, si on ouvre le service Properties (click droit sur le service pour faire apparaître le menu correspondant)…
…afin d’aller dans l’onglet ‘Log On’.
Cocher ‘This account’ et activer le bouton ‘Browse’ :
Dans la fenêtre suivante, activer le bouton ‘Advanced’.
Puis ‘Find Now’ afin d’afficher la liste des users avec lesquels se connecter (Log On) afin de lancer ce service.
Je vais sélectionner le user Windows que j’utilise au démarrage de Windows :
Je valide avec le bouton ‘OK’. Remarquez que mon nom de user Windows est préfixé par l’identifiant de ma machine (JPFPC).
‘OK’ à nouveau afin de revenir dans l’onglet ‘Log On’, dans lequel je vais saisir le password correspondant à mon user. Bouton ‘Apply’ puis ‘OK’ afin de fermer la fenêtre Properties.
Nous pouvons maintenant relancer le service et … cá marche ! Le message d’erreur a disparu et le service est à l’état ‘Started’.
Vérification
Votre portail SonarQube – en tant que service Windows – est disponible à l’adresse Localhost:9000. Rentrez cette url dans votre browser préféré, et vous verrez apparaître le tableau de bord SonarQube tel que vous l’avez laissé.
Vérifiez : vos analyses précédentes s’affichent correctement, vos Quality Profiles personnalisés sont bien présents, vos plugins sont là également, et actifs (pas besoin de re-rentrer les licences). L’ensemble de votre configuration de SonarQube sous Tomcat et de vos projets, bref votre repository SonarQube, au grand complet est disponible et prêt à l’emploi.
Il ne nous reste plus qu’à effectuer une analyse depuis notre Jenkins actuel, sous Tomcat donc.
Ce que nous verrons dans le prochain post. Dans l’attente, passez une bonne semaine.