SonarQube déploiement 4.0
Depuis la version 4, l'éditeur ne supporte plus la génération du war et doit être exécutée avec des script utilisant le framework JSW. Cet article présente le déploiement de SonarQube, comme un fichier war, dans un le serveur d'application Tomcat 7 sur un serveur Ubuntu. L'instance est une mise à jour de la version 3.7.4
Sommaire
Votre avis
Nobody voted on this yet
|
|
Téléchargement et installation
#sudo wget -P /tmp https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-4.0.zip #sudo unzip -d /tmp /tmp/sonarqube-4.0.zip
Déploiement
La mise en place de l'application s'inspire de ce qui était préalablement réalisé par script ANT.
Il faut dans un premier temps copier l'application sous le répertoire webapps
de Tomcat.
#sudo service tomcat7 stop #sudo rm -rf /var/lib/tomcat7/webapps/sonar* #sudo mv /tmp/sonarqube-4.0/web /var/lib/tomcat7/webapps/sonar #sudo chown -R tomcat7:tomcat7 /var/lib/tomcat7/webapps/sonar
Driver base de données
Plusieurs drivers sont fournis avec la distribution. Dans les précédentes versions, tous les drivers étaient copiés dans le répertoire WEB-INF/lib
de l'application. Mais il suffit de choisir le driver en fonction de la base de données utilisée. Dans le cadre de cet article, MySql est utilisé.
#sudo cp /tmp/sonarqube-4.1/extensions/jdbc-driver/mysql/*.jar /var/lib/tomcat7/webapps/sonar/WEB-INF/lib/ #sudo chown tomcat7:tomcat7 /var/lib/tomcat7/webapps/sonar/WEB-INF/lib/*.jar
A noter, le driver doit être disponible dans le répertoire WEB-INF
et dans l'arborescence extensions/jdbc-driver
dans l'emplacement défini par SONAR_HOME
.
Plugins
Des plugins principaux et complémentaires sont disponibles dans la distribution. Les premiers doivent être disponibles le répertoire lib/core-plugins
. Les seconds doivent être déposés dans extensions/downloads
, et seront installés lors du démarrage.
#sudo rm -rf /var/opt/sonar/extensions/jdbc-driver #sudo rm -f /var/opt/sonar/lib/*.jar #sudo rm -f /var/opt/sonar/lib/core-plugins/*.jar #sudo cp -p -R /tmp/sonarqube-4.0/extensions/jdbc-driver /var/opt/sonar/extensions/jdbc-driver #sudo cp -p /tmp/sonarqube-4.0/lib/bundled-plugins/*.jar /var/opt/sonar/extensions/downloads/ #sudo cp -p /tmp/sonarqube-4.0/lib/core-plugins/*.jar /var/opt/sonar/lib/core-plugins/ #sudo chown -R tomcat7:tomcat7 /var/opt/sonar/extensions/jdbc-driver #sudo chown tomcat7:tomcat7 /var/opt/sonar/extensions/downloads/*.jar #sudo chown tomcat7:tomcat7 /var/opt/sonar/lib/core-plugins/*.jar
Le plugin Quality Index
est marqué comme Deprecated à partir de la version 4.0. Il suffit de placer le jar dans le répertoire /var/opt/sonar/extensions/deprecated
, et il sera supprimé lors du démarrage.
#sudo mv /var/opt/sonar/extensions/plugins/sonar-quality-index-plugin-1.1.3.jar /var/opt/sonar/extensions/deprecated
Erreur
En fonction des plugins installés, une erreur peut se produire. Dans le cadre de cette installation, le plugin Cobertura
était installé en version 1.3, et le plugin standard Java
en version 1.4, entraînant une erreur lors du démarrage. Le message suivant est affiché dans la log sonar.log
.
2015.08.26 01:25:47 ERROR o.s.s.p.PlatformLifecycleListener Fail to start server org.sonar.updatecenter.common.exception.IncompatiblePluginVersionException: The plugins 'cobertura' and 'java' must have exactly the same version as they belong to the same group. at org.sonar.updatecenter.common.PluginReferential.getParentRelease(PluginReferential.java:132) ~[sonar-update-center-common-1.8.jar:na] at org.sonar.updatecenter.common.PluginReferential.setParent(PluginReferential.java:120) ~[sonar-update-center-common-1.8.jar:na] at org.sonar.updatecenter.common.PluginReferentialManifestConverter.fromPluginManifests(PluginReferentialManifestConverter.java:54) ~[sonar-update-center-common-1.8.jar:na] at org.sonar.server.plugins.PluginReferentialMetadataConverter.getInstalledPluginReferential(PluginReferentialMetadataConverter.java:40) ~ [PluginReferentialMetadataConverter.class:na] at org.sonar.server.plugins.InstalledPluginReferentialFactory.init(InstalledPluginReferentialFactory.java:48) ~[InstalledPluginReferentialFactory.class:na] at org.sonar.server.plugins.InstalledPluginReferentialFactory.start(InstalledPluginReferentialFactory.java:37) ~[InstalledPluginReferentialFactory.class:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_72] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_72] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_72]
Le plugin Cobertura
est donc mis à jour.
#sudo wget -P /var/opt/sonar/extensions/downloads http://downloads.sonarsource.com/plugins/org/codehaus/sonar-plugins/sonar-cobertura-plugin/1.4/sonar-cobertura-plugin-1.4.jar #sudo chown tomcat7:tomcat7 /var/opt/sonar/extensions/downloads/*.jar
Sur la machine, l'installation de cette version a été assez tardive. Des mises à jour de plugins étaient disponibles, remplaçant même ceux fournis dans l'instance téléchargée.
#sudo wget -P /var/opt/sonar/extensions/downloads http://downloads.sonarsource.com/plugins/org/codehaus/sonar-plugins/sonar-motion-chart-plugin/1.6/sonar-motion-chart-plugin-1.6.jar #sudo chown tomcat7:tomcat7 /var/opt/sonar/extensions/downloads
Variable d'environnement
Dans les précédente version, le fichier sonar.properties
était modifié afin de spécifier la variable sonarHome
utilisé dans le script ANT pour configurer la variable SONAR_HOME
dans le fichier sonar-war.properties
. Ce fichier est devenu obsolète et la variable doit être définie au niveau du système. Cependant, la variable SONAR_HOME
est nécessaire, sans celle-ci un message d'erreur est présent dans la trace d'exécution de Tomcat.
22:10:21.864 [localhost-startStop-1] ERROR o.s.s.p.PlatformLifecycleListener - Fail to start server java.lang.IllegalStateException: The system property or env variable SONAR_HOME is not set at org.sonar.server.platform.SonarHome.locate(SonarHome.java:64) ~[SonarHome.class:na] at org.sonar.server.platform.SonarHome$1.get(SonarHome.java:47) ~[SonarHome$1.class:na] at org.sonar.server.platform.SonarHome$1.get(SonarHome.java:45) ~[SonarHome$1.class:na] at com.google.common.base.Suppliers$MemoizingSupplier.get(Suppliers.java:109) ~[guava-10.0.1.jar:na] at org.sonar.server.platform.SonarHome.getHome(SonarHome.java:54) ~[SonarHome.class:na] at org.sonar.server.platform.PlatformLifecycleListener.configureLogback(PlatformLifecycleListener.java:64) ~[PlatformLifecycleListener.class:na] at org.sonar.server.platform.PlatformLifecycleListener.contextInitialized(PlatformLifecycleListener.java:34) ~[PlatformLifecycleListener.class:na] at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939) [catalina.jar:7.0.47] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) [catalina.jar:7.0.47] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [catalina.jar:7.0.47] at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) [catalina.jar:7.0.47] at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) [catalina.jar:7.0.47] at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) [catalina.jar:7.0.47] at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1120) [catalina.jar:7.0.47] at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1678) [catalina.jar:7.0.47] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_17] at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) [na:1.7.0_17] at java.util.concurrent.FutureTask.run(FutureTask.java:166) [na:1.7.0_17] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_17] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_17] at java.lang.Thread.run(Thread.java:722) [na:1.7.0_17]
Dans le cadre de cet article, le déploiement est réalisé sous Tomcat et il est possible de modifier ces variables à partir du script setenv.sh
, dans le répertoire /var/lib/tomcat7/bin
, comme décrit ici, en ajoutant la ligne suivante.
export CATALINA_OPTS="-DSONAR_HOME=/var/opt/sonar -Xms1024m -Xmx1024m -XX:MaxPermSize=256m"
Sur cette instruction, la variable d'environement est ajoutée à travers un paramètre d'exécution de Java. Des ajustements sur la mémoire sont également mis en place.
Mise à jour de la base
Pour cette version, une mise à jour de la base de données est nécessaire, ce qui est indiqué dans la trace d'exécution de Tomcat.
Database must be upgraded. Please browse /setup
Celle-ci se déclenche en accédant à l'URL http://SERVER/sonar/setup.
Voir Aussi
Upgrade Notes: https://docs.sonarqube.org/display/SONARQUBE53/Release+4.0+Upgrade+Notes