Upgrade SonarQube

Upgrade SonarQubeCela fait un moment que  je n’ai pas mis à jour mon environnement SonarQube. Un bon six mois, voire plus, puisque je suis encore en version 4.2 alors que la dernière version disponible est une 4.5.1 LTS (Long Term Support). Donc une version éminemment candidate à installation.

Cet article sur le blog de SonarSource décrit les buts et objectifs d’une telle version : Walking the Tightrope: Balancing Agility and Stability. La 4.5.1 ne propose pas uniquement des corrections mais également nombre d’évolutions et de nouvelles features.

Ce n’est pas le premier post que j’écris sur ce sujet, vous les retrouverez tous groupés sous cette partie SonarQube – Installation de mon blog. Cet article sera donc plus concis, avec probablement des renvois nombreux en cas de besoin vers ces posts précédents et plus détaillés.

Plan d’actions

Je prends mon temps pour faire un upgrade (déjà que je n’en fais pas si souvent), car il y a, sinon une procédure, du moins un plan à suivre. En commençant par ce que j’appelle les pré-requis.

Je commence par regarder quels sont les nouveautés de la version SonarQube et surtout, surtout, surtout, je vérifie la doc d’upgrade parce que même si je la connais quasiment par coeur, même si je peux consulter sur mon blog un article décrivant un upgrade antérieur, et bien ce processus peut varier quelque peu, et cela m’est déjà arrivé de rencontrer une erreur pour ne pas avoir suivi avec attention ces pré-requis. L’installation ou la mise-a-jour de SonarQube n’est pas automatique, ce n’est pas un click sur un exécutable pour implémenter le software, il y a quelques étapes manuelles.

D’ailleurs ces notes d’upgrade en version 4.5 listent des impacts possibles sur mon environnement SonarQube, les différents analyses et projets dans mon repository, leurs configurations, et surtout pour ce qui est de notre upgrade : les conflits éventuels avec des plugins en version précédente. Je vois en particulier qu’il me faudra supprimer le plugin Technical Debt – vous savez, le plugin SQALE que j’utilise dans toutes mes analyses – avant de procéder à l’installation de cette nouvelle version de SonarQube.

SonarQube Upgrade 4.5.1

L’Update Center m’offre également une vision globale et synthétique des différents plugins à actualiser.

SonarQube_Admin_SettingsPour cela, dans SonarQube, je me logue en Admin, puis le menu Settings m’amène à la page de même nom …

SonarQube_MenuUpdateCenter… dans laquelle je sélectionne le menu Update Center (barre de menu gauche) pour arriver dans cette même page ‘Update Center’, avec différents onglets. Nous commençons d’abord par l’onglet ‘System Updates’ qui me permet de vérifier que :

  1. Je peux upgrader directement ma version installée 4.2 en la dernière version 4.5.1 sans passer par une version intermédiaire. Super !
  2. La procédure d’upgrade qui consiste en l’upgrade préalable de certains plugins avant …
  3. … l’installation de la version SonarQube 4.5.1

SonarQube Update Center

Mais auparavant, dernier pré-requis : la sauvegarde de ma base de données, ou plutôt du schéma (user) Sonar. Si vous avez Oracle comme moi, reportez vous à la procédure précise de backup.

Upgrade de plugins (1)

Je commence donc par mettre à jour les plugins indiqués ci-dessus, en cliquant sur le bouton ‘Upgrade’ pour chacun d’eux … pour voir s’afficher un message d’erreur :  SonarQube_UpdatePlugin_ErrMsg1Bon, ça se mord un peu la queue : l’onglet ‘System Updates’ me dit d’upgrader certains plugins avant d’upgrader SonarQube, mais lorsque je tente de suivre ces indications, ce message m’indique qu’il faut d’abord actualiser la version de SonarQube avant de procéder ainsi.
D’ailleurs, c’est ce qui est indiqué clairement dans l’onglet ‘Plugin Updates’ :

SonarQube_UpdateCenter_PluginsUpdate

J’ai tenté de downloader une nouvelle version du plugin ‘Developer Cockpit’ dans le répertoire correspondant ‘..\Sonar\sonarqube-4.5.1\extensions\plugins’ puis un restart du service Sonar, mais sans succès :

SonarQube_UpdatePlugin_ErrMsg2

Le log d’erreur ‘..\Sonar\sonarqube-4.5.1\logs\sonar.log’ m’indique clairement que je ne peux pas travailler avec cette version de plugin pour cette version de SonarQube. En fait, c’est la doc d’upgrade en version 4.5 qu’il faut suivre, d’où encore une fois l’importance de toujours consulter celle-ci avant toute action. Je vais donc supprimer le plugin Technical Debt, le seul plugin deprecated dans mon environment, avant d’installer la nouvelle version de SonarQube.

Upgrade de SonarQube

Les instructions détaillés se trouvent dans un post précédent Sonarqube Upgrade 4-0. Donc je vais les lister succinctement, sauf si nous rencontrons quoi que ce soit de nouveau et différent.

  1. Arrêt du service Sonar.
  2. Backup (via zip) du répertoire actuel de SonarQube (‘..\Sonar\sonarqube-4.2’), par sécurité.
  3. Download du fichier ‘sonarqube-4.5.1.zip’ depuis la page de download.
  4. Suppression du service Sonar existant, par le fichier ‘..\Sonar\sonarqube-4.2\bin\windows-x86-64\UninstallNTService.bat’. Evidemment, choisissez le répertoire correspondant à votre système d’exploitation (Windows 7 64 bits en ce qui me concerne).
  5. Copie des plugins de la version précédente vers la version nouvelle, donc depuis ‘..\Sonar\sonarqube-4.2\extensions\plugins’ vers ‘..\Sonar\sonarqube-4.5.1\extensions\plugins’.
    Attention : pour cette installation particulière en version 4.5.1, je ne vais pas recopier le plugin Technical Debt, puisque celui-ci est deprecated et doit être supprimé du répertoire de plugins, comme indiqué précédemment.
  6. Copie du driver de base de données Oracle ‘ojdbc6.jar’ vers son nouveau répertoire ‘..\Sonar\sonarqube-4.5.1\extensions\\jdbc-driver\oracle’ (puisque j’utilise une base de données Oracle).
  7. Comme indiqué sur la page d’upgrade SonarSource, nous reprenons les caractéristiques propres à notre installation pour mettre à jour le fichier ‘..\Sonar\sonarqube-4.5.1\conf\sonar.properties’ avec l’adresse de ma base de données Oracle. On pourrait faire de même avec le fichier ‘wrapper.conf’, mais je préfère commencer avec la version par défaut, et éventuellement envisager certains ajustements en cas de problème.

Les modifications dans le fichier ‘sonar.properties’ sont donc classiquement les suivantes :

  • User Oracle pour le schéma Sonar : ces lignes sont déjà présentes par défaut dans le fichier, mais en commentaires. Donc quitter le signe ‘#’ en début de ligne.

SonarQube properties

  • Adresse de connexion à ma base de données Oracle. SonarQube_Properties2

Bien. Je peux maintenant lancer l’installation du nouveau service Sonar pour cette version avec le fichier ‘..\Sonar\sonarqube-4.5.1\bin\windows-x86-64\‘InstallNTService.bat’. A nouveau, choisissez le répertoire qui correspond à votre version d’OS.

Ok. Installation effectuée :

SonarQube_UpdatePlugin_MsgInstall

Le nouveau service ‘SonarQube’ (et non plus ‘Sonar’ comme dans la précédente installation en version 4.2) apparaît dans la liste des services Windows.

SonarQube_InstallNewService

Et lorsque je lance celui-ci, je tombe sur un message d’erreur déjà rencontré précédemment. Le problème vient du compte ‘Local System’ qui tente de démarrer le service, ce qui ne marche pas sur mon laptop. Il se peut que vous ne rencontriez pas ce problème lors d’une installation en serveur, mais si c’est le cas sur votre machine personnelle, suivez la procédure indiquée dans ce post afin de modifier le user de lancement du service.

Je relance le service, puis SonarQube : ‘http://localhost:9000/’ par défaut. Je tombe sur la page de maintenance.

SonarQube maintenance page

C’est normal, il nous reste la dernière étape : l’upgrade de la database depuis la page setup : ‘http://localhost:9000/setup’.
Cela peut prendre un peu de temps, en fonction des données présentes dans votre repository SonarQube, c’est-à-dire du nombre et de la taille de vos projets.

SonarQube_DBUpdate

Mais finalement, SonarQube nous indique que la base de données s’est actualisée correctement. C’est le signal que notre upgrade de version a fonctionné.

Upgrade de plugins (2)

Maintenant que ma version de SonarQube est à jour, je peux procéder à l’actualisation des plugins, donc depuis l’onglet ‘Plugin Updates’ en cliquant sur tous les boutons d’upgrade à la version la plus récente, pour chacun des plugins.

SonarQube_UpdatePlugins

Malheureusement, cela ne marche pas : j’ai un message d’erreur concernant le plugin ‘surefire’, qui doit être absolument compatible en version avec le plugin ‘java’.

SonarQube_UpdatePlugin_ErrMsg3Et lorsque je supprime celui-ci du répertoire des plugins, l’upgrade s’interrompt à nouveau avec un autre message d’erreur concernant le plugin ‘jacoco’, puis ‘squid’, … alors même que ces plugins ne sont pas présents dans la liste ci-dessus.

En fait là encore, il faut avant toute chose rendre visite à la page des plugins afin de vérifier la présence d’Upgrade Notes, comme c’est le cas pour les différents plugins Java http://docs.sonarqube.org/display/SONAR/Java+Plugin.

SonarQube_UpdateMsg4Après avoir suivi les instructions listées dans cette page et supprimé les plugins indiqués, l’upgrade des autres plugins se déroule sans erreur. Je peux ensuite réinstaller les plugins souhaités sans problème.

Synthèse

Donc en guise de synthèse, quelques points importants à noter :

  • Pré-requis: toujours consulter les Releases notes ou Upgrade notes, et pas seulement de SonarQube, mais également des plugins que nous souhaitons actualiser.
  • L’Update Center est très précieux pour connaître d’un seul coup d’oeil les plugins installés et les versions nouvelles, et donc préparer la procédure d’upgrade.
  • L’Update Center ne permet pas toujours une mise à jour automatique : certaines étapes préalables, comme la suppression manuelle d’une version de certains plugins sont parfois nécessaires, comme nous avons pu le voir ci-dessus.

Notre environnement SonarQube est maintenant à jour. Je suis impatient de voir les nouvelles règles en matière de qualité de code SAP (ABAP) et Cobol. Dans un prochain 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *