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

Documents pareils