Intégration Continue : Utilisation de Jenkins Nexus Sonar

Dimension: px
Commencer à balayer dès la page:

Download "Intégration Continue : Utilisation de Jenkins Nexus Sonar"

Transcription

1 Intégration Continue : Utilisation de Nexus Sonar Cédric Joffroy Fabrice Ambert Ecole Polytechnique 5 Septembre 2013 Département d Informatique des Systèmes Complexes Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 1 / 22

2 Plan 1 Objectif de l atelier 2 Vue d ensemble du processus 3 Les outils utilisés Nexus Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 2 / 22

3 Plan Objectif Processus Outils Application 1 Objectif de l atelier 2 Vue d ensemble du processus 3 Les outils utilisés Nexus Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 3 / 22

4 Objectif de l atelier Découvrir des outils : création de jobs pour le Build continu Nexus : mise à disposition de librairies Java Sonar : réalisation de métriques sur le code Maven : simplification de la création et de la gestion des dépendances Découvrir ce qu est l intégration continue Scrutation des dépôts (SVN, Git... ) pour la construction automatique des projets Construction de projets en cascades Déploiement automatisé... Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 4 / 22

5 Plan Objectif Processus Outils Application 1 Objectif de l atelier 2 Vue d ensemble du processus 3 Les outils utilisés Nexus Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 5 / 22

6 Processus de l intégration continue 0 Processus 0 Commit des sources SVN Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 6 / 22

7 Processus de l intégration continue Processus 0 Commit des sources 1 Récupération des sources/envoi des sources 0 SVN 1 Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 6 / 22

8 Processus de l intégration continue Processus 0 Commit des sources 0 SVN 1 Récupération des sources/envoi des sources 1 2 Lancement du Job 2 Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 6 / 22

9 Processus de l intégration continue Processus 0 Commit des sources 0 SVN 1 Récupération des sources/envoi des sources 1 2 Lancement du Job 3 Demande des librairies à Nexus 3 2 Nexus Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 6 / 22

10 Processus de l intégration continue Processus 0 Commit des sources 0 SVN 1 Récupération des sources/envoi des sources 1 2 Lancement du Job 3 Demande des librairies à Nexus Récupération des librairies dans le dépôt Nexus 4 Dépôt Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 6 / 22

11 Processus de l intégration continue Processus 0 Commit des sources 0 SVN 1 Récupération des sources/envoi des sources 1 2 Lancement du Job 3 Demande des librairies à Nexus Récupération des librairies dans le dépôt 5 Envoi des librairies à puis construction Nexus 4 Dépôt Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 6 / 22

12 Processus de l intégration continue Processus 0 Commit des sources 0 SVN 1 Récupération des sources/envoi des sources 1 2 Lancement du Job 3 Demande des librairies à Nexus Récupération des librairies dans le dépôt 5 Envoi des librairies à puis construction Nexus 4 7 Sonar 6 Envoi des métriques 7 Publications des librairies Dépôt Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 6 / 22

13 Plan Objectif Processus Outils Application 1 Objectif de l atelier 2 Vue d ensemble du processus 3 Les outils utilisés Nexus Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 7 / 22

14 Plan Objectif Processus Outils Application... 1 Objectif de l atelier 2 Vue d ensemble du processus 3 Les outils utilisés Nexus Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 8 / 22

15 ... Gestion de différents types de projets Java : Maven, Ant Avec l ajout de plugins : C++, PHP,... Gestion des utilisateurs par projet Vision d ensemble des projets en construction continue Déclenchement de constructions en cascade Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 9 / 22

16 Plan Objectif Processus Outils Application... Nexus Maven 1 Objectif de l atelier 2 Vue d ensemble du processus 3 Les outils utilisés Nexus Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 10 / 22

17 ... Nexus Maven Nexus Maven Nexus Gère les librairies (Java) Standard intégrées aux dépôts Maven officiel Tierces ajoutées et mises à disposition des développeurs Projets déployées en fonction des projets des développeurs Gère les accès aux librairies/dépôts Cloisonner les projets et accès aux ressources associées Spécifier qui peut déployer des nouvelles librairies Maven Permet la construction de projets (Java) S appuie sur la définition d un fichier pom.xml Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 11 / 22

18 Plan Objectif Processus Outils Application... Sonar 1 Objectif de l atelier 2 Vue d ensemble du processus 3 Les outils utilisés Nexus Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 12 / 22

19 Sonar Objectif Processus Outils Application... Sonar Métriques sur un projet Nombre de lignes de code Pourcentage de code documenter Pourcentage de code dupliquer Problèmes dans le code Selon 5 critères : bloquant, critique, majeur, mineur, informatif Possibilité de créer des tickets directement (si plugin installé) Tests unitaires Pourcentage de couverture Pourcentage des tests réussis Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 13 / 22

20 Plan Objectif Processus Outils Application 1 Objectif de l atelier 2 Vue d ensemble du processus 3 Les outils utilisés Nexus Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 14 / 22

21 Exercice Objectif Processus Outils Application Réalisation d une calculatrice Prise en main du code SVN Création du "job" Ajout d une nouvelle fonction au sein du code Réalisation d une librairie spécifique (par groupe) Ajout au sein du SVN Création du "job" Utilisation de cette librairie au sein du projet Calculatrice (+ dépendance ) Utilisation des librairies faites par les autres groupes Création des versions Release des librairies Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 15 / 22

22 Merci pour votre attention Avez-vous des questions? Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 16 / 22

23 Configuration du Proxy pour SVN Mac/Linux Modifier le fichier /.subversion/servers Ajouter les lignes suivantes : http-proxy-host = cache.polytechnique.fr http-proxy-port = 8080 Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 17 / 22

24 Création d un job (1/3) Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 18 / 22

25 Création d un job (2/3) Informations générales Fournir nom et une description Spécifier quand les builds doivent être supprimés Spécifier qui a accès au jobs (sécurité) Gestion du code source Spécifier quel est le système de versioning Spécifier l URL du dépôt Ce qui déclenche le build Scruter les modification du dépôt Construire à la suite d un autre projet (projet amont) Construire périodiquement Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 19 / 22

26 Création d un job (3/3) Build Spécifier le POM racine (cas d un job Maven). Par défaut : "pom.xml" Spécifier les objectifs et options du build : clean : pour supprimer la construction précédente package : pour créer les paquets verify : pour contrôler la construction Autres Gestion des Release Maven Actions à la suite du build : Déclencher d autres projets Sonar Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 20 / 22

27 Exemple d un fichier pom.xml < p r o j e c t xmlns= " h t t p : / / maven. apache. org /POM/ " xmlns:xsi=" h t t p : / / org /2001/XMLSchema instance " xsi:schemalocation= " h t t p : / / maven. apache. org /POM/ h t t p : / / maven. apache. org / xsd / maven xsd " > <modelversion> < / modelversion> <groupid> f r. femtost. disc. jdev2013< / groupid> < a r t i f a c t I d >ToyProject< / a r t i f a c t I d > <version>1.0 SNAPSHOT< / version> <packaging> j a r < / packaging> <name>jdevtest< / name> < u r l > h t t p : / / maven. apache. org< / u r l > <dependencies> <dependency> <groupid> j u n i t < / groupid> < a r t i f a c t I d > j u n i t < / a r t i f a c t I d > <version> < / version> <scope>test < / scope> < / dependency> < / dependencies> <distributionmanagement> < r e p o s i t o r y > < i d >nexus disc< / i d > < u r l > h t t p : // :8082 / nexus / content / r e p o s i t o r i e s / releases / < / u r l > < / r e p o s i t o r y > <snapshotrepository> < i d >nexus disc< / i d > < u r l > h t t p : // :8082 / nexus / content / r e p o s i t o r i e s / snapshots / < / u r l > < / snapshotrepository> < / distributionmanagement> < / p r o j e c t > Cédric Joffroy, Fabrice Ambert Atelier T6.A2 Intégration continue 21 / 22