Jenkins / SonarQube : l’intégration continue

Technique

6 nov, 2017

Travailler en équipe favorise la collaboration et améliore la qualité du travail, mais peut aussi générer des régressions. Heureusement il existe un ensemble de pratiques permettant de vérifier que chaque nouveau livrable ne génère de pas de régressions dans l’application existante.

On parle d’Intégration Continue.

Si on parle d’IC, on parle forcément de :

– Code versionné (Git).
– Tests automatisés (PHPUnit).
– Serveur d’IC (Jenkins, Travis, Bamboo …)
– Mesure de la qualité du code (SonarQube).

Dans cet article nous allons voir une introduction aux outils Jenkins et SonarQube.

Mais au fait, comment ça fonctionne ?

 

articlemanuelle11 1024x986 Jenkins / SonarQube : lintégration continue

Une fois le code commité et pushé sur le repository, le développeur fera une pull request qui sera relue et mergée dans la branche de développement par le Lead Dev.

C’est cette action de merge qui déclenchera le processus d’intégration dans Jenkins.

Jenkins un serveur aux petits soins !

Jenkins est un outil logiciel écrit en Java  qui permet de tester et de signaler en temps réel des modifications apportées à un code existant. Il permet aux développeurs de rechercher et de résoudre rapidement les bugs, ainsi que d’automatiser les tests de leurs livrables.

Installation :

La documentation officielle de Jenkins et beaucoup de ressources expliquent comment installer le serveur et le template PHP.
Si vous voulez tester “rapidement”, Docker et Docker-compose seront vos alliés !

 

articlemanuelle22 1024x726 Jenkins / SonarQube : lintégration continue

SonarQube, j’analyse tout !

SonarQube est un logiciel libre permettant de mesurer la qualité du code source en continu.

Reporting sur :
– identification des duplications de code.
– mesure du niveau de documentation.
– respect des règles de programmation.
– détection des bugs potentiels.
– évaluation de la couverture de code par les tests unitaires.
– analyse de la répartition de la complexité.
– analyse du design et de l’architecture d’une application…

Installation :

Pour Installer SonarQube, il y a le guide et il y a Docker!

articlemanuelle31 555x1024 Jenkins / SonarQube : lintégration continue

Quelques commandes de base :

articlemanuelle4 Jenkins / SonarQube : lintégration continue

https://localhost:8080 : Serveur Jenkins
https://localhost:9000 : Serveur SonarQube

 

Et si on configurait tout ça !

Il va falloir configurer SonarQube et Jenkins afin que les rapports de qualité générés lors du build soient exploitables dans l’analyseur.

articlemanuelle5 Jenkins / SonarQube : lintégration continue

Afin que Sonar puisse analyser le projet, il faut créer à la racine de celui-ci un fichier contenant les metadatas.

articlemanuelle6 Jenkins / SonarQube : lintégration continue

Lorsque celui-ci sera analysé il apparaîtra dans la liste des projets

articlemanuelle7 Jenkins / SonarQube : lintégration continue

Pour le paramétrage de jenkins, le tuto Jenkins et Symfony donne les bases de configuration.

Vous y trouverez la liste des plugins à installer :
– HTML Publisher Plugin : Ce plugin permet de générer des rapports HTML.
– checkstyle : C’est un analyseur du code qui génère un rapport de résultat.
– Clover PHP Plugin : Ce plugin permet de présenter une interface basé sur les résultats de PHPUnit.
– DRY Plugin : Ce plugin génère un rapport des tendances pour la duplication du code.
– PMD Plugin : Ce plugin permet la génération un rapport de tendance pour PMD et détecte toutes les défaillance du code.
– Violations :Ce plugin génère des rapports statiques détecteurs de violation de code tels que checkstyle, pmd, cpd, findbugs, fxcop, stylecop et simian.
– xUnit Plugin : Ce plugin permet la publication des résultats de de l’exécution de l’outil de test.
– Phing Plugin : Ce plugin permet l’utilisation de phing pour le build de votre projet php.
– Post build task :  Ce plugin permet aux utilisateurs d’exécuter des tâches shell/batch en fonction des logs de sortie du build .
– SonarQube Plugin :  Ce plugin permet de configurer le serveur et les tâches liées à SonarQube

Ainsi que les rubriques à renseigner dans votre Job.

Sonar et Jenkins partagent la même base de données. Celle-ci doit être configurée dans le système du serveur IC.

Administrer Jenkins > Configurer le système

articlemanuelle9 Jenkins / SonarQube : lintégration continue

Dans propriétés globales, on indique où se trouve les exécutables PHPMD, PHPCS…

Dans la section SonarQube servers, on renseigne les informations concernant notre serveur.

Dans url du serveur c’est https://sonarqube:9000 au lieu de https://localhost:9000 car le service docker contenant celui-ci se nomme sonarqube. (Modifiez vos hosts).

Build de l’application et analyse des rapports

Toutes les tasks qui ont été déclarées (PHPMD…) lors de la configuration du job sont exécutées afin de générer les rapports. A la fin du build, ceux-ci sont disponibles dans Sonar où peut voir le type d’erreur directement dans le fichier ainsi que les bonnes pratiques à mettre en oeuvre.

image2 Jenkins / SonarQube : lintégration continue

Il faut corriger, commiter, rebuilder pour voir l’analyse ?!

Heureusement non ils ont pensé à tout ! En tout cas sur PHPStorm.

Il existe deux plugins : SonarLint et SonaQube community

Une fois configurées les règles qui ont été définies pour le projet sont appliquées ainsi le développeur peut contrôler et corriger les anomalies.

image9 Jenkins / SonarQube : lintégration continue

N’hésitez pas à adapter les règles en fonction de vos besoins et analyser vos projets front.

 

 

Sources :

https://github.com/hltfbk/Excitement-Open-Platform/wiki/Developers

https://cs.sensiolabs.org/

https://code4community.com/index.php/2016/05/02/jenkins-et-symfony/

https://www.sonarqube.org/

https://jenkins-le-guide-complet.github.io/html/book.html

Laisser un commentaire.