Intégration Continue : Utilisation de Jenkins – Nexus
Transcription
Intégration Continue : Utilisation de Jenkins – Nexus
Intégration Continue : Utilisation de Jenkins – 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 Plan 1 Objectif de l’atelier 2 Vue d’ensemble du processus 3 Les outils utilisés Jenkins Nexus – Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 2 / 22 Objectif Processus Outils Application Plan 1 Objectif de l’atelier 2 Vue d’ensemble du processus 3 Les outils utilisés Jenkins Nexus – Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 3 / 22 Objectif Processus Outils Application Objectif de l’atelier Découvrir des outils I Jenkins : création de jobs pour le Build continu I Nexus : mise à disposition de librairies Java I Sonar : réalisation de métriques sur le code I Maven : simplification de la création et de la gestion des dépendances Découvrir ce qu’est l’intégration continue I Scrutation des dépôts (SVN, Git. . . ) pour la construction automatique des projets I Construction de projets en cascades I Déploiement automatisé I ... Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 4 / 22 Objectif Processus Outils Application Plan 1 Objectif de l’atelier 2 Vue d’ensemble du processus 3 Les outils utilisés Jenkins Nexus – Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 5 / 22 Objectif Processus Outils Application Processus de l’intégration continue 0 Processus I SVN 0 Commit des sources Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 6 / 22 Objectif Processus Outils Application Processus de l’intégration continue 0 Processus I I SVN 0 Commit des sources 1 Récupération des sources/Envoi des sources 1 Jenkins Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 6 / 22 Objectif Processus Outils Application Processus de l’intégration continue 0 Processus I I I SVN 0 Commit des sources 1 Récupération des sources/Envoi des sources 2 Lancement du Job Jenkins Cédric Joffroy, Fabrice Ambert 1 Jenkins Atelier T6.A2 – Intégration continue 2 6 / 22 Objectif Processus Outils Application Processus de l’intégration continue 0 Processus I I I I SVN 0 Commit des sources 1 Récupération des sources/Envoi des sources 1 2 Lancement du Job Jenkins 3 Demande des librairies à Nexus Jenkins 2 3 Nexus Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 6 / 22 Objectif Processus Outils Application Processus de l’intégration continue 0 Processus I I I SVN 0 Commit des sources 1 Récupération des sources/Envoi des sources 1 2 Lancement du Job Jenkins I 3 Demande des librairies à Nexus I 4 Récupération des librairies dans le dépôt Jenkins 2 3 Nexus 4 Dépôt Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 6 / 22 Objectif Processus Outils Application Processus de l’intégration continue 0 Processus I I I I SVN 0 Commit des sources 1 Récupération des sources/Envoi des sources 1 2 Lancement du Job Jenkins 3 Demande des librairies à Nexus I 4 Récupération des librairies dans le dépôt I 5 Envoi des librairies à Jenkins puis construction Jenkins 3 2 5 Nexus 4 Dépôt Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 6 / 22 Objectif Processus Outils Application Processus de l’intégration continue 0 Processus I I I I I I SVN 0 Commit des sources 1 Récupération des sources/Envoi des sources 1 2 Lancement du Job Jenkins 3 Demande des librairies à Nexus 4 Récupération des librairies dans le dépôt 5 Envoi des librairies à Jenkins puis construction I 6 Envoi des métriques I 7 Publications des librairies Cédric Joffroy, Fabrice Ambert Jenkins 3 2 6 5 Nexus Sonar 7 4 Dépôt Atelier T6.A2 – Intégration continue 6 / 22 Objectif Processus Outils Application Plan 1 Objectif de l’atelier 2 Vue d’ensemble du processus 3 Les outils utilisés Jenkins Nexus – Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 7 / 22 Objectif Processus Outils Application x . . . Jenkins Plan 1 Objectif de l’atelier 2 Vue d’ensemble du processus 3 Les outils utilisés Jenkins Nexus – Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 8 / 22 Objectif Processus Outils Application x . . . Jenkins Jenkins I Gestion de différents types de projets I I Java : Maven, Ant Avec l’ajout de plugins : C++, PHP, . . . I Gestion des utilisateurs par projet I Vision d’ensemble des projets en construction continue I Déclenchement de constructions en cascade Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 9 / 22 Objectif Processus Outils Application x . . . Nexus – Maven Plan 1 Objectif de l’atelier 2 Vue d’ensemble du processus 3 Les outils utilisés Jenkins Nexus – Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 10 / 22 Objectif Processus Outils Application x . . . Nexus – Maven Nexus – Maven Nexus I Gère les librairies (Java) I I I I 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 I I Cloisonner les projets et accès aux ressources associées Spécifier qui peut déployer des nouvelles librairies Maven I Permet la construction de projets (Java) I S’appuie sur la définition d’un fichier pom.xml Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 11 / 22 Objectif Processus Outils Application x . . . Sonar Plan 1 Objectif de l’atelier 2 Vue d’ensemble du processus 3 Les outils utilisés Jenkins Nexus – Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 12 / 22 Objectif Processus Outils Application x . . . Sonar Sonar I Métriques sur un projet I I I I Problèmes dans le code I I I Nombre de lignes de code Pourcentage de code documenter Pourcentage de code dupliquer Selon 5 critères : bloquant, critique, majeur, mineur, informatif Possibilité de créer des tickets directement (si plugin installé) Tests unitaires I I Pourcentage de couverture Pourcentage des tests réussis Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 13 / 22 Objectif Processus Outils Application Plan 1 Objectif de l’atelier 2 Vue d’ensemble du processus 3 Les outils utilisés Jenkins Nexus – Maven Sonar 4 Mise en application Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 14 / 22 Objectif Processus Outils Application Exercice I Réalisation d’une calculatrice I I I I Prise en main du code SVN Création du "job" Jenkins Ajout d’une nouvelle fonction au sein du code Réalisation d’une librairie spécifique (par groupe) I I I Ajout au sein du SVN Création du "job" Jenkins Utilisation de cette librairie au sein du projet Calculatrice (+ dépendance Jenkins) I Utilisation des librairies faites par les autres groupes I Création des versions Release des librairies Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 15 / 22 Objectif Processus Outils Application Merci pour votre attention Avez-vous des questions ? Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 16 / 22 Objectif Processus Outils Application Configuration du Proxy pour SVN Mac/Linux I Modifier le fichier ∼/.subversion/servers I Ajouter les lignes suivantes : I I http-proxy-host = cache.polytechnique.fr http-proxy-port = 8080 Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 17 / 22 Objectif Processus Outils Application Jenkins – Création d’un job (1/3) Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 18 / 22 Objectif Processus Outils Application Jenkins – Création d’un job (2/3) Informations générales I Fournir nom et une description I Spécifier quand les builds doivent être supprimés I Spécifier qui a accès au jobs (sécurité) Gestion du code source I Spécifier quel est le système de versioning I Spécifier l’URL du dépôt Ce qui déclenche le build I Scruter les modification du dépôt I Construire à la suite d’un autre projet (projet amont) I Construire périodiquement Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 19 / 22 Objectif Processus Outils Application Jenkins – Création d’un job (3/3) Build I Spécifier le POM racine (cas d’un job Maven). Par défaut : "pom.xml" I Spécifier les objectifs et options du build : I I I clean : pour supprimer la construction précédente package : pour créer les paquets verify : pour contrôler la construction Autres I Gestion des Release Maven I Actions à la suite du build : I I Déclencher d’autres projets Sonar Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 20 / 22 Objectif Processus Outils Application Exemple d’un fichier pom.xml < p r o j e c t xmlns= " h t t p : / / maven . apache . org /POM/ 4 . 0 . 0 " x m l n s : x s i = " h t t p : / / www. w3 . org / 2 0 0 1 /XMLSchema−i n s t a n c e " x s i : s c h e m a L o c a t i o n = " h t t p : / / maven . apache . org /POM/ 4 . 0 . 0 h t t p : / / maven . apache . org / xsd / maven−4.0.0. xsd " > <modelVersion> 4 . 0 . 0 < / modelVersion> < g r o u p I d > f r . f e m t o s t . d i s c . jdev2013< / g r o u p I d > < 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> <artifactId>junit</ artifactId> <version> 3 . 8 . 1 < / version> <scope> t e s t < / scope> < / dependency> < / dependencies> <distributionManagement> <repository> < i d >nexus−d i s c < / i d > < u r l > h t t p : / / 1 9 4 . 5 7 . 1 3 6 . 1 8 9 :8082 / nexus / c o n t e n t / r e p o s i t o r i e s / r e l e a s e s / < / u r l > </ repository> <snapshotRepository> < i d >nexus−d i s c < / i d > < u r l > h t t p : / / 1 9 4 . 5 7 . 1 3 6 . 1 8 9 :8082 / nexus / c o n t e n t / r e p o s i t o r i e s / snapshots / < / u r l > < / snapshotRepository> < / distributionManagement> </ project> Cédric Joffroy, Fabrice Ambert Atelier T6.A2 – Intégration continue 21 / 22