Nous utiliseront les images officielles MySQL et Sonar de Docker.
Pour info, voici la documentation de Sonar :
MySQL & Sonar
Lancer les commandes suivantes sur le serveur pour démarrer les conteneurs Docker :MySQL
docker run --name sonarmysql -e MYSQL_ROOT_PASSWORD=admin -e MYSQL_DATABASE=sonar -e MYSQL_USER=sonar -e MYSQL_PASSWORD=sonar -p 3306:3306 -d mysql:latest
Sonar
docker run --name sonarqube -p 9000:9000 -p 9092:9092 -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -e SONARQUBE_JDBC_URL="jdbc:mysql://sonarmysql:3306/sonar?useUnicode=true&characterEncoding=utf8" --link sonarmysql:sonarmysql -d sonarqube:latest
Interface Web de Sonar
URL :http://[URL du serveur Docker]:9000
Installer le plugin Javascript pour Sonar
- Aller sur l'interface Web de Sonar
http://[URL du serveur]:9000
- Se connecter en adminstrateur
- login / mdp :
admin
/admin
- Menu :
Settings > System > Update Center > Available Plugins
- Sélectionner les plugins à ajouter :
- Javascript
- CSS
- Redémarrer Sonar :
- Dans le terminal de commandes :
docker ps
- copier l'identifiant associé au conteneur sonarqube
docker stop [identifiant]
- le conteneur sonarqube s'arrête
docker start [identifiant]
- le conteneur sonarqube est redémarré
- Retourner sur la liste des plugins sur l'interface Web de Sonar
- Menu :
Settings > System > Update Center
- Le plugin Javascript apparaît dans cette liste
Grunt : grunt-sonar-runner
Installer le plugin
- Installer le plugin grunt-sonar-runner dans le projet
- A la racine du projet, exécuter :
npm install grunt-sonar-runner --save-dev
Configurer Grunt
- Modifier le fichier
Gruntfile.js
: - Ajouter la déclaration du plugin au début du fichier
Gruntfile.js
:
module.exports = function(grunt) { grunt.loadNpmTasks('grunt-sonar-runner'); ... };
sonarRunner: {
analysis: {
options: {
debug: true,
separator: '\n',
sonar: {
host: {
url: 'http://[URL du serveur]:9000'
},
jdbc: {
url: 'jdbc:mysql://[URL du serveur]:3306/sonar',
username: 'sonar',
password: 'sonar'
},
projectKey: 'sonar:grunt-sonar-runner:0.1.0',
projectName: '[nom du projet]',
projectVersion: '0.10',
sources: ['app','test'].join(','),
exclusions: ['**/bower_components','**/node_modules].join(','),
language: 'js',
sourceEncoding: 'UTF-8'
}
}
}
}
[URL du serveur]
: URL du serveur sur lequel ont été lancées les commandes docker ci-dessus[nom du projet]
: Nom du projet tel qu'il sera affiché dans Sonar
Lancer l'analyse via Grunt
grunt sonarRunner:analysis
Voir les résultats
- Aller sur l'interface Web de Sonar
- Le projet apparaît dans le Dashboard de Sonar
Erreur possible
MySQL : PacketTooBigException
Dans le cas de l'erreur suivante :Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (5457390 > 4194304).Pour résoudre cette erreur :
- Se connecter avec un client SQL au serveur mySQL en tant que
root
avec le mot de passeadmin
- Exécuter la commande suivante :
SET GLOBAL max_allowed_packet = 1024*1024*14;