Java11 SonarQue analysis Jenkins

De EjnTricks

A partir des versions 9 de SonarQube, les analyses devront être réalisées avec une version 11 de Java.

Cet article présente comment forcer la version de Java lors de l'analyse Sonar déclenchée depuis jenkins.

Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Study icon.png Analyse

Lors de l'affichage d'un projet analysé par Sonarqube, un message indique un warning sur celui-ci.


En cliquant sur le lien, un détail est présenté en spécifiant explicitement que la version de Java doit être mises à jour en version 11 minimum.


L'analyse SonarQube est déclenchée par Jenkins par un simple commande mvn du type suivant.

#/var/opt/maven/bin/mvn -DBRANCHE=develop -Dsonar.host.url=...  -Dsonar.login=****** sonar:sonar

Il suffit de modifier la commande Maven pour prendre en compte une version souhaitée de Java.


Configuration-icon.png Configuration

L'instance utilisée est installée à l'aide de Jenkins Runner, où un compte utilisateur a été mis en place avec un répertoire HOME spécifique, à savoir /var/opt/jenkins/common/home.

Le script de démarrage de Maven contient deux parties intéressante pour cette étude. La première concerne l'initialisation de la commande Java

if [ -z "$JAVA_HOME" ] ; then
  JAVACMD=`which java`
else
  JAVACMD="$JAVA_HOME/bin/java"
fi

Il suffit donc de s'assurer que la variable d'environnement JAVA_HOME est correctement spécifiée.

La deuxième partie intéressante se situe au début du script, pour le chargement d'un fichier d'environnement.

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

Le script mavenrc est recherché depuis l'emplacement /etc/mavenrc et $HOME/.mavenrc.

Il faut donc créer ce script avec initialisation de la variable pointant sur la version de Java souhaité, par exemple /usr/lib/jvm/default-java. La commande suivante, exécutée après s'être connecté avec le compte d'exécution de jenkins permet de mettre en place ce script.

#echo "JAVA_HOME=/usr/lib/jvm/default-java" >> ~/.mavenrc