SonarQube Update Version 5.3 vers 5.4

De EjnTricks

Cette mise à jour s'effectue sur l'installation décrite pour la version 4.5.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Warning-icon.png Attention

Dans le cadre de cette version, une modification a été réalisée au niveau du fichier de configuration sonar.properties. Le paramètre sonar.web.context a été supprimé et ne permet plus de spécifier une racine pour l'application. Jusqu'à présent, les articles de ce Wiki, présentait une installation sous /sonar. Or ce paramètre n'étant plus présent, l'accès à l'application, pour la mise à jour de la base de données et ensuite, n'est plus possible. L'application ne peut donc être accédé que depuis la racine / sur serveur Web. IL est donc impératif de mettre à jour la configuration Apache. A noter que le paramètre devrait être de nouveau disponible dans la version 5.5.

Cf les tickets JIRA associés.


La configuration Apache contient les instructions suivantes.

ProxyPass / http://localhost:9000/
ProxyPassReverse / http://localhost:9000/

<Proxy http://localhost:9000/>
  Order allow,deny
  Allow from all
</Proxy>

Bien entendu, ceci peut être problématique et doit être étudié, si l'application est accessible depuis un alias regroupant d'autre application.


System-Install-icon.png Download-icon.png Téléchargement et installation

#sudo wget -P /tmp https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.4.zip
#sudo unzip /tmp/sonarqube-5.4.zip -d /var/opt/sonarqube


Icon-Configuration-Settings.png Déploiement

Il faut dans un premier temps organiser les binaires sous /var/opt/sonarqube/5.4.

#sudo mv /var/opt/sonarqube/sonarqube-5.4 /var/opt/sonarqube/5.4
#sudo chown -R sonar:sonar /var/opt/sonarqube/5.4
#sudo chmod -R go-rwx /var/opt/sonarqube/5.4

Les droits sont positionnés pour que seul le compte sonar puisse accéder aux fichiers.


Run-icon.png Script démarrage

Les modifications dans le script de démarrage, fichier /var/opt/sonarqube/5.4/bin/linux-x86-64/sonar.sh, doivent permettre :

  • Spécifier l'utilisateur d'exécution;
  • Spécifier un emplacement spécifique pour le fichier "PID".

A noter que lors de l'exécution, si un compte est spécifié et différent de celui en cours d'exécution, le script de démarrage est redémarré avec le compte souhaité.

# If specified, the Wrapper will be run as the specified user.
# IMPORTANT - Make sure that the user has the required privileges to write
#  the PID file and wrapper.log files.  Failure to be able to write the log
#  file will cause the Wrapper to exit without any way to write out an error
#  message.
# NOTE - This will set the user which is used to run the Wrapper as well as
#  the JVM and is not useful in situations where a privileged resource or
#  port needs to be allocated prior to the user being changed.
#RUN_AS_USER=
RUN_AS_USER=sonar

Et

# Location of the pid file.
#PIDDIR="."
PIDDIR="/run/sonarqube"

Cependant, le répertoire /run/sonarqube n'existe pas et le compte sonar n'a pas les droits d'écriture dans /run. Une erreur se produira donc lors de l'exécution, car le fichier "PID" ne pourra être créé. Le script de démarrage /var/opt/sonarqube/5.4/bin/linux-x86-64/sonar.sh est donc modifié afin de forcer la création du répertoire. Pour rappel, comme il est exécuté avec le compte root du fait du service, il est tout à fait possible de créer le répertoire et de modifier les droits d'accès.

Au final, le script est modifié ainsi :

# Location of the pid file.
#PIDDIR="."
PIDDIR="/run/sonarqube"

# If uncommented, causes the Wrapper to be shutdown using an anchor file.
#  When launched with the 'start' command, it will also ignore all INT and
#  TERM signals.
#IGNORE_SIGNALS=true

# If specified, the Wrapper will be run as the specified user.
# IMPORTANT - Make sure that the user has the required privileges to write
#  the PID file and wrapper.log files.  Failure to be able to write the log
#  file will cause the Wrapper to exit without any way to write out an error
#  message.
# NOTE - This will set the user which is used to run the Wrapper as well as
#  the JVM and is not useful in situations where a privileged resource or
#  port needs to be allocated prior to the user being changed.
#RUN_AS_USER=
RUN_AS_USER=sonar
if [ ! -d "$PIDDIR" ]; then
        mkdir -p "$PIDDIR"
        [ -z "$PIDDIR" ] || chown "$RUN_AS_USER:$RUN_AS_USER" "$PIDDIR"
fi


Icon-log.png Fichiers log

Par défaut, les logs sont placés dans le répertoire logs de l’instance SonarQube :

  • /var/opt/sonarqube/5.4/logs/sonar.log
  • /var/opt/sonarqube/5.4/logs/access.log

La définition de ces emplacements se situe dans différentes configurations.

  • Fichier conf/wrapper.conf les écritures du wrapper dans les fichiers sonar.log
#********************************************************************
# Wrapper Logs
#********************************************************************

wrapper.console.format=PM
wrapper.console.loglevel=INFO
wrapper.logfile=../../logs/sonar.log
wrapper.logfile.format=M
wrapper.logfile.loglevel=INFO
  • Fichier conf/sonar.properties pour sonar.log et access.log
#--------------------------------------------------------------------------------------------------
# LOGGING

# Level of information displayed in the logs: NONE (default), BASIC (functional information)
# and FULL (functional and technical details)
#sonar.log.profilingLevel=NONE

# Path to log files. Can be absolute or relative to installation directory.
# Default is <installation home>/logs
#sonar.path.logs=logs


Afin de centraliser les logs, les messages sont redirigés vers /var/log/sonarqube en mettant en place des liens symboliques. Ceci permet de ne pas modifier les fichiers de configurations, limitant les modifications lors des futures montées de version. Le répertoire /var/opt/sonarqube/5.4/logs existe déjà et sera supprimé. Du fait de cette organisation, utilisation d'un répertoire common, un répertoire /var/opt/sonarqube/common/logs sera créé lors du démarrage. Pour ce dernier, le lien est préalablement créé.

#sudo rmdir /var/opt/sonarqube/5.4/logs
#sudo ln -s /var/log/sonarqube /var/opt/sonarqube/5.4/logs
#sudo chown -h sonar:sonar /var/opt/sonarqube/5.4/logs


Share-icon.png Fichiers communs

Dans la procdure officielle de mise à jour, il est mentionné de ne pas reprendre les précédents fichiers de configuration. Or, il semblerait que le passage entre 5.3 et 5.4 ne présente aucune modification de ces fichiers, mise à part la suppression du paramètre mentionné en introduction.

Il est possible de reprendre les fichiers externalisés préalablement, par le mise en place de liens.

#sudo rm -rf /var/opt/sonarqube/5.4/conf
#sudo ln -s /var/opt/sonarqube/common/conf /var/opt/sonarqube/5.4/conf
#sudo chown -h sonar:sonar /var/opt/sonarqube/5.4/conf
#sudo rm -rf /var/opt/sonarqube/5.4/data
#sudo ln -s /var/opt/sonarqube/common/data /var/opt/sonarqube/5.4/data
#sudo chown -h sonar:sonar /var/opt/sonarqube/5.4/data
#sudo rm -rf /var/opt/sonarqube/5.4/extensions/plugins
#sudo ln -s /var/opt/sonarqube/common/extensions/plugins /var/opt/sonarqube/5.4/extensions/plugins
#sudo chown -h sonar:sonar /var/opt/sonarqube/5.4/extensions/plugins
#sudo rm -rf /var/opt/sonarqube/5.4/temp
#sudo ln -s /var/opt/sonarqube/common/temp /var/opt/sonarqube/5.4/temp
#sudo chown -h sonar:sonar /var/opt/sonarqube/5.4/temp

Dans la procédure d'installation, il est indiqué qu'il faut supprimé le répertoire de données de ElasticSearch, sous répertoire es de data.

#sudo rm -rf /var/opt/sonarqube/common/data/es

Run-icon.png Exécution

Lors de l'installation de SonarQube en service, un lien /var/opt/sonarqube/installed a été mis en place pour pointer sur la version à activer. Des liens ont également été mis en place depuis /var/opt/sonarqube/common vers /var/opt/sonarqube/installed. Ainsi, en modifiant le lien installed, ceux-ci seront automatiquement activés sans aucune modification nécessaire.

#sudo service sonarqube stop
#sudo rm /var/opt/sonarqube/installed
#sudo ln -s /var/opt/sonarqube/5.4 /var/opt/sonarqube/installed
#sudo chown -h sonar:sonar /var/opt/sonarqube/installed

Il suffit de relancer le service pour la prise en compte de la mise à jour.

#sudo service sonarqube start


Icon-database-process.png Mise à jour de la base

Une mise à jour de la base de données est nécessaire pour cette version, ce qui est indiqué dans la trace d'exécution, fichier /var/log/sonarqube/sonar.log.

WARN  web[o.s.s.p.DatabaseServerCompatibility] Database must be upgraded. Please backup database and browse /setup

Celle-ci se déclenche en accédant à l'URL http://SERVER/setup, uniquement pour cette version car le contexte root n'est plus disponible.

La page offre la possibilité de mettre à jour la base de données.


Il suffit de cliquer sur le bouton Upgrade. Une fenêtre d'attente est alors affichée. Une fois la mise à jour terminée, la page est rafraîchie sur la page d'accueil.


Update icon.png Plugin-icon.png Plugins

Le répertoire de téléchargement doit être dans l'arborescence définie par la variable SONAR_HOME, soit dans ce cas /var/opt/sonarqube/5.1/extensions/downloads. Comme pour la mise en place des fichiers communs, il faut mettre en place un lien depuis l'instance vers le répertoire common, si il n'existe pas.

#sudo rm -rf /var/opt/sonarqube/5.4/extensions/downloads
#sudo mkdir -p /var/opt/sonarqube/common/extensions/downloads
#sudo chmod 700 /var/opt/sonarqube/common/extensions/downloads
#sudo chown sonar:sonar /var/opt/sonarqube/common/extensions/downloads
#sudo ln -s /var/opt/sonarqube/common/extensions/downloads /var/opt/sonarqube/5.4/extensions/downloads
#sudo chown -h sonar:sonar /var/opt/sonarqube/5.4/extensions/downloads


Viewer icon.png Voir Aussi

Upgrade Notes: http://docs.sonarqube.org/display/SONARNEXT/Release+5.4+Upgrade+Notes