Guide pour installer SonarQube sur Debian 8 Jessie
SonarQube est un logiciel libre permettant de mesurer la qualité du code source en continu.
Pré-requis
- Une machine Debian 8 Jessie avec au moins 2Go de mémoire (voir plus si possible).
- MySQL 5.6
- Java 8
command update-alternatives --display java java - auto mode link currently points to /opt/java-oracle/jdk1.8.0_111/bin/java /opt/java-oracle/jdk1.8.0_111/bin/java - priority 1041 Current 'best' version is '/opt/java-oracle/jdk1.8.0_111/bin/java'.
Etape 1/5 - Installation
Télécharger SonarQube en utilisant les liens directs sur leur site :
http://www.sonarqube.org/downloads/
Pour ce guide, la version 5.6.3 a été utilisée.
command wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.6.3.zip
Décompresser l’archive dans le répertoire /opt
Éditer le fichier /opt/sonarqube-5.6.3/conf/sonar.properties et modifier ces lignes :
# 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.6 or greater # 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
Etape 2/5 - Configuration MySQL
Créer un utilisateur « sonar » avec le mot de passe « sonar » et une base de données « sonar ».
Utiliser phpMyAdmin pour créer l’ensemble en une fois.
« Utilisateur > Ajouter un utilisateur »
Cocher la case « Créer une base portant son nom et donner à cet utilisateur tous les privilèges sur cette base. ».
Etape 3/5 - Première exécution
Pour lancer SonarQube, il faut utiliser le script correspondant à votre environnement.
Dans mon cas il se trouve dans : /opt/sonarqube-5.6.3/bin/linux-x86-64
command cd /opt/sonarqube-5.6.3/bin/linux-x86-64 command ./sonar.sh start
Dans la session ssh, effectuer un « tail -f » sur le fichier /opt/sonarqube-5.6.3/logs/sonar.log.
Cela permettra de vérifier que SonaQube se connecte bien à la base de données MySQL et installe les tables.
A vérifier également dans phpMyAdmin.
Pour arrêter SonarQube :
command cd /opt/sonarqube-5.6.3/bin/linux-x86-64 command ./sonar.sh stop
Etape 4/5 - Premier accès
Dans mon cas, j’ai utilisé une box Vagrant avec le port 9000 mappé.
config.vm.network "forwarded_port", guest: 9000, host: 9000
Donc dans mon navigateur, j’utilise cette url : http://localhost:9000
Le dashboard s’affiche au bout de quelques dizaines de secondes la première fois.
Le temps pour SonarQube d’initialiser la base de données.
La connexion par défaut est admin avec le mot de passe admin.
Etape 5/5 - SonarQube en tant que service
Je vais un peu adapter la documentation de SonarQube.
Disponible ici : http://docs.sonarqube.org/display/SONAR/Running+SonarQube+as+a+Service+on+Linux
Créer le fichier /etc/init.d/sonar :
#!/bin/sh # # rc file for SonarQube # # chkconfig: 345 96 10 # description: SonarQube system (www.sonarsource.org) # ### BEGIN INIT INFO # Provides: sonar # Required-Start: $network # Required-Stop: $network # Default-Start: 3 4 5 # Default-Stop: 0 1 2 6 # Short-Description: SonarQube system (www.sonarsource.org) # Description: SonarQube system (www.sonarsource.org) ### END INIT INFO /usr/bin/sonar $*
Créer un lien symbolic :
command ln -s /opt/sonarqube-5.6.3/bin/linux-x86-64/sonar.sh /usr/bin/sonar
Rendre le fichier /etc/init.d/sonar exécutable :
command chmod 755 /etc/init.d/sonar
Enregistrer le service :
command update-rc.d sonar defaults
Relancer la machine pour tester le démarrage automatique.
Du coup, on peut utiliser Systemd pour gérer le service :
command systemctl status sonar.service
Résultat :
? sonar.service - LSB: SonarQube system (www.sonarsource.org) Loaded: loaded (/etc/init.d/sonar) Active: active (running) since Wed 2016-11-02 17:17:14 CET; 4s ago Process: 1605 ExecStop=/etc/init.d/sonar stop (code=exited, status=0/SUCCESS) Process: 1773 ExecStart=/etc/init.d/sonar start (code=exited, status=0/SUCCESS) CGroup: /system.slice/sonar.service tq1839 /opt/sonarqube-5.6.3/bin/linux-x86-64/./wrapper /opt/sonarqube-5.6.3/bin/linux-x86-64/../../conf/wrapper.conf w... tq1841 java -Djava.awt.headless=true -Xms3m -Xmx3m -Djava.library.path=./lib -classpath ../../lib/jsw/wrapper-3.2.3.ja... mq1864 /opt/java-oracle/jdk1.8.0_111/jre/bin/java -Djava.awt.headless=true -Xmx1G -Xms256m -Xss256k -Djava.net.preferI... Nov 02 17:17:13 sonarqube systemd[1]: Starting LSB: SonarQube system (www.sonarsource.org)... Nov 02 17:17:13 sonarqube sonar[1773]: Starting SonarQube... Nov 02 17:17:14 sonarqube sonar[1773]: Started SonarQube. Nov 02 17:17:14 sonarqube systemd[1]: Started LSB: SonarQube system (www.sonarsource.org).
Mais aussi :
command systemctl start sonar.service command systemctl stop sonar.service command systemctl restart sonar.service
Documentation officielle
http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
Remerciements
-
- Un grand merci à Jérôme pour son Mémo très complet - Le bloc-note de Jérôme Baudin - JBNet.fr