SonarQube Update Version 5.4 vers 5.5

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

Lors de l'installation de la version 5.4, le paramètre sonar.web.context a été supprimé. Celui-ci a été réintroduit dans la version 5.5 suite aux demandes des utilisateurs. Il sera donc réactivé dans le cadre de cette installation, car l'instance est déployée dans un sous domaine commun à d'autre application.

La configuration Apache est restaurée avec les instructions suivantes.

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

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


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

#sudo wget -P /tmp https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.5.zip
#sudo unzip /tmp/sonarqube-5.5.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.5.

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

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.5/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.5/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.5/logs/sonar.log
  • /var/opt/sonarqube/5.5/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 logs. Supported values are INFO(default), DEBUG and TRACE (DEBUG + SQL + ES requests)
#sonar.log.level=INFO

# 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.5/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.5/logs
#sudo ln -s /var/log/sonarqube /var/opt/sonarqube/5.5/logs
#sudo chown -h sonar:sonar /var/opt/sonarqube/5.5/logs


Icon-Configuration-Settings.png Paramétrages

Les fichiers de paramétrages ont été légèrement modifié depuis la précédente version. Les fichiers de la distribution sont alors placés dans le répertoire externalisé, soit /var/opt/sonarqube/common/conf dans le cadre de cette installation.

#sudo rm /var/opt/sonarqube/common/conf/*
#sudo cp -p /var/opt/sonarqube/5.5/conf/* /var/opt/sonarqube/common/conf/
#sudo chown sonar:sonar /var/opt/sonarqube/common/conf/*
#sudo chmod 600 /var/opt/sonarqube/common/conf/*

Icon-database.png Base de données

La configuration MySql a été réalisée depuis les premières versions. Elle pourrait être reprise, mais le format du fichier sonar.properties a été légèrement modifié. De plus, des éléments de paramétrages ont été supprimés.

Un exemple est fourni dans le fichier et il suffit de commenter le paramètre actif, sur une base H2, et d'activer celui pour MySql. Il faut également configurer le compte d'accès à la base en reseignant les paramètres sonar.jdbc.username et sonar.jdbc.password

# User credentials.
# Permissions to create tables, indices and triggers must be granted to JDBC user.
# The schema must be created first.
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

#----- Embedded Database (default)
# H2 embedded database server listening port, defaults to 9092
#sonar.embeddedDatabase.port=9092


#----- MySQL 5.x
# Only InnoDB storage engine is supported (not myISAM).
# Only the bundled driver is supported. It can not be changed.
#sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

User-group-icon.png Annuaire LDAP

La configuration LDAP a été mise en place depuis la version 1.1 du plugin, sans être modifiée. Lors de cette mise à jour, celle-ci est reprise pour être épurée. Les lignes suivantes sont ajoutées au fichier de configuration /var/opt/sonarqube/common/conf/sonar.properties.

#--------------------------------------------------------------------------------------------------
# LDAP Configuration
# General Configuration
sonar.security.realm=LDAP
ldap.url=ldap://localhost:389

# User Configuration
ldap.user.baseDn=ou=people,dc=ejnserver,dc=fr
ldap.user.request=(uid={login})
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=mail

# Group Configuration
ldap.group.baseDn=ou=groups,dc=ejnserver,dc=fr
ldap.group.request=(&(objectClass=groupOfNames)(member={dn}))

Configuration App Web-Icon.png Contexte

Il faut donc spécifier à l'instance qu'il y a un contexte de déploiement, soit sonar, à mettre en place en modifiant le paramètre sonar.web.context.

#--------------------------------------------------------------------------------------------------
# WEB SERVER

# Web server is executed in a dedicated Java process. By default heap size is 768Mb.
# Use the following property to customize JVM options.
#    Recommendations:
#
#    The HotSpot Server VM is recommended. The property -server should be added if server mode
#    is not enabled by default on your environment: http://docs.oracle.com/javase/7/docs/technotes/guides/vm/server-class.html
#
#sonar.web.javaOpts=-Xmx512m -Xms128m  -XX:MaxPermSize=160m -XX:+HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true

# Same as previous property, but allows to not repeat all other settings like -Xmx
#sonar.web.javaAdditionalOpts=

# Binding IP address. For servers with more than one IP address, this property specifies which
# address will be used for listening on the specified ports.
# By default, ports will be used on all IP addresses associated with the server.
#sonar.web.host=0.0.0.0

# Web context. When set, it must start with forward slash (for example /sonarqube).
# The default value is root context (empty value).
#sonar.web.context=
sonar.web.context=/sonar


Share-icon.png Fichiers communs

Les liens vers les fichiers communs sont mis en place.

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

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.5 /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/sonar/setup.

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.


En fin de mise à jour, un message est affiché temporairement pour indiquer la bonne exécution de la mise à jour de la base de données.


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.5/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.5/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.5/extensions/downloads
#sudo chown -h sonar:sonar /var/opt/sonarqube/5.5/extensions/downloads


Viewer icon.png Voir Aussi

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