Télécharger la présentation
Publié parAlvery Remy Modifié depuis plus de 11 années
1
15-19 février 2009 – Paris La Défense Exemplaire Mr Anthony HERBE
Formation INTEGRATION CONTINUE 15-19 février 2009 – Paris La Défense Exemplaire Mr Anthony HERBE Participant : Mr Frédéric MULLER 1 1
2
SOMMAIRE A propos d’Objis Introduction intégration continue
Gérer les sources avec Subversion Automatiser et générer rapports avec MAVEN Intégration continue avec Cruise Control Contact - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 2
3
A propos d’objis Spécialiste formation JAVA depuis 2005
70% de travaux pratiques Bilan pédagogique individuel Veille technologique permanente Une approche unique de la formation Expertise, pédagogie, partage - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 3
4
+ de 100 tutoriaux Java/j2ee
sur Nos tutoriaux pour vous initier Nos formatrions pour maîtriser Soa, Web Services, Spring, Struts, Hibernate, Ant, Maven, … - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 4
5
INTRODUCTION Qu’est ce que l’intégration continue ?
Pourquoi automatiser ? Par où commencer ? Le cycle vertueux de l’intégration continue - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 5
6
Qu’est ce que l’intégration continue ?
Technique puissante permettant dans le cadre du développement d’un logiciel en équipes de: Garder en phase les équipes de dév Limiter risques de dérive Limiter la complexité A intervalles réguliers, vous allez construire (build) et tester la dernière version de votre logiciel. Parrallèlement, chaque développeur teste et valide (commit) son travail en ajoutant son code dans un lieu de stockage unique. - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 6
7
Pourquoi automatiser ? Gagner du temps
Vous ne faîtes pas de taches répétitives Gagner en confiance Indépendant de votre efficacité du moment Procédures répétables Diminue le besoin de documentation Pour nouveaux entrants projet, utiliser scripts ! …et + en analysant le script. - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 7
8
Par où commencer ? 1) Outil centralisé gestion versions code sources
Lieu unique de partage Retour arrières, snapshots, branches… 2) Tests unitaires automatisés Chaque développeur 3) Scripts Coté serveur pour automatiser (Ex : crontab) 4)Outils de communication Mail, Tél, Rss… - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 8
9
Cycle vertueux intégration continue
- Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING
10
Gérer les sources avec SUBVERSION
Introduction et problème à résoudre Concepts fondamentaux Subversion au jour le jour Branches et Tags Administration Ressources et liens utiles - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 10
11
Introduction Subversion est un système de contrôle de versions (ou gestionnaire de sources). Subversion autorise plusieurs personnes à travailler sur des documents communs (chacun en ayant une copie locale) Subversion permet : synchronisations entre les différentes versions de ces documents retours arrière (undo) vers versions plus anciennes, suivi modifications au cours du temps. - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 11
12
Problème à résoudre - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 12
13
Solution 1 : le lock - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 13
14
Solution 2 : copy-modify-merge (phase1)
- Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 14
15
Solution 2 : copy-modify-merge (phase2)
- Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 15
16
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation SPRING
Architecture SVN Formation SUBVERSION - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 16
17
svn checkout http://monsite.com:4567/repos
URL accès Repository svn checkout svn checkout svn checkout file:///var/svn/repos svn checkout file:///C:/var/svn/repos svn checkout svn://localhost/repository1 svn checkout ssh+svn://localhost/repository/monprojet - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 17
18
Arborescence - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 18
19
Copie de travail (svn checkout)
Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 19
20
Subversion au jour le jour
Mettre à jour votre copie de travail svn update Réaliser des modifications svn add svn delete svn copy svn move Examiner vos changements svn status svn diff Publier vos changements svn commit Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 20
21
Désactivation cache login/passwd
Par défaut, et pour vous éviter à chaque fois de fournir login/pwd, Subversion met en cache version criptée login/pwd Répertoire %APPDATA%/Subversion/auth c:\Documents And Settings\douglas\Appli_Data Fichier 'conf' store-auth-creds = no - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 21
22
svnadmin create c:\svn_repository\repository1 Import d'un projet :
Repository & projets Création : svnadmin create c:\svn_repository\repository1 Import d'un projet : svn —username douglas —password java import monprojet1 svn://localhost/repository1/monprojet1 -m "Import initial projet 1" Contrôle d’accès au repository conf\svnserve.conf et conf\passwd Organisation repository & projet 1 repository par projet ? - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 22
23
Révisions Dès qu’un fichier est modifié, c’est la révision de tous les fichiers qui s’incrémente (différence forte avec CVS) - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 23
24
Branches et Tags - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 24
25
Branches et Tags Bonne pratique : répertoires trunk, tags, branches pour chaque projet - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 25
26
Branche - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 26
27
Création d’une branche
svn copy m « création d’une branche de trunk» - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 27
28
Création d’une branche de développement Changer de branche :
Branches et tags Création d’un tag svn copy monprojet/trunk monprojet/tags/release-1.0-snapshot Création d’une branche de développement svn copy monprojet/trunk monprojet/branches/prepa-dev-1.1 Changer de branche : svn switch monprojet/branches/prepa-dev-1.1 Merge vers branche principale Juste pour voir : svn merge –r 11:16 –dry-run Pour de vrai : svn merge –r 11:16 Revenir à version précédente svn merge –r 16:11 - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 28
29
Administration Subversion
svnadmin Création de repository Opérations de maintenance svnlook Examiner révisions (-r) & transactions (-t) Utilisé typiquement par hooks (pré/post commit) svnlook –revision, svnlook –t svnlook info /var/svn/repos –r 19 auteur, date , nb caractère dans log - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 29
30
Liens utiles SUBVERSION
PDF SVN BOOK : Site Subversion : Client svn Subclipse plugin Eclipse 3.x Client svn windows Tortoise SVN - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 30
31
Gestion de projet avec MAVEN
Définition pour un développeur Définition pour un chef de projet Comparaison avec ANT Démo application multi-modules internationale - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 31
32
Qu’est ce que MAVEN ? Pour développeur/concepteur : outil de build
Pour Chef de projet : outil de gestion de projet Maven est un outil de gestion projet caractérisé par le modèle POM (Project Object Model) Un ensemble de standards Un cycle de vie de projet Un système de gestion des dépendences Une stratégie d'exécution d'objectifs (goals) standard à chaque phase d'un projet Un ensemble de plugins implémentant des services - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 32
33
MAVEN : les conventions
Propriétés communes à un projet Maven Installation plus facile !!! Ex : mvn install Les sources dans $HOME/src/main/java Ex : Employe.java Les tests dans $HOME/src/test Ex : EmployeTest.java Les configs dans $HOME/src/main/resources Ex : database.properties - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 33
34
MAVEN : les conventions
Dans fichier pom.xml, vous décrivez votre projet : Quelle licence ? (<licence>) Quels développeurs ? (<developpers>) Quelles dépendences ? (<dependencies>) Quel outil gestion des sources ? (<scm>) Quel site web ? (<site>) Quels plugins (<plugins>)… Vous définissez de façon unique votre projet, en lui associant des 'coordonées' = ensemble d'identifiants : GroupId : groupe ds lequel le projet se trouve ArtifactId : nom du projet Version : version du projet - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 34
35
MAVEN : les conventions
Coordonnées MAVEN - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 35
36
MAVEN : POM (Project Object Model)
Gestion de dépendences Via 'coordonnées' maven de la dépendence Repositories distants Une dépendance peux se trouver sur repository distant (Ex : .jar sur autre serveur) Réutilisabilité Plugins Maven (Installation, configuration, personalisation) Portabilité Intégration avec IDE : Netbeans, Eclipse, jBuilder... Recherche simplifiée d'artifacts mvnrepository.com ou index Nexus - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 36
37
Comparaison ANT / MAVEN
MAVEN a des conventions. Il sait déja où sont les sources, les tests, les fichiers de config... Classes créées dans target/classes Création de Jars. MAVEN est déclaratif. Tout ce que vous avez à faire est de créer un fichier pom.xml et mettre vos sources dans le répertoire par défaut. Un projet MAVEN possède un cycle vie, que vous invoquez lorsque vous lancez mvn install. Maven execute un ensemble d'instructions associées au cycle de vie du projet - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 37
38
Comparaison ANT / MAVEN
Cibles ANT - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 38
39
MAVEN : plugin, goal, Mojo . Exemple avec le plugin ‘help’
Le plugin help possède 4 goal (taches) Chaque goal implémenté par un Mojo (classe Java) help:describe fournit des infos sur un plugin/goal Mvn help:describe –Dplugin=help Mvn help:describe –Dplugin=help -Ddetail Mvn help:describe –Dplugin=help -Dfull Mvn help:describe –Dplugin=help -DMojo=system –Dfull Les autres (help:active-profiles, help:effective-pom, help:effective-settings) se lancent à partir de la racine d’un projet maven (pom.xml) - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 39
40
Cibles Maven # mvn compile Compilation dans target/classes
# mvn package Création du Jar # mvn install Création du Jar et install. Repository local $USER_HOME/.m2/repository # mvn clean Suppression du répertoire target - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 40
41
Maven : cycle de vie et relation Phases / Plugins
- Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 41
42
Phases Maven - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 42
43
Sections principales d’un pom.xml
Coordonnées Maven Construction : <build> Plugins phase build : <plugins> Génération de rapports : <reporting> Stockage artifacts (livrables) : <repository> Dépendances : <dependencies> Optimisations <dependencyManagement> <pluginManagement> - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 43
44
Dépendances : plugin dependency
mvn dependency:resolve (lister dépendances) mvn dependency:tree (arbre des dépendances) mvn dependency:tree -X (arbre : mode debug) Utile pour résolution de pb Equivalent graphique via plugin m2eclipse - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 44
45
Plugin Eclipse m2eclipse
Création projet Maven Intégration avec serveur gestion sources Combinaison plugins Subclipse / m2eclipse Synchronisation dépendences eclipse / maven Editeur pom.xml Livre maven book Instal. dépendances/plugin (index Nexus) Graphe de dépendances - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 45
46
Plugin Eclipse m2eclipse : exemple graphe dépendances
- Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 46
47
Plugin Eclipse m2eclipse : l’index Nexus en action pour création projet
- Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 47
48
Exemple de projet multi modules
Plusieurs équipes de développements France, Suède, Maroc, Brésil, Italie, USA Chef de projets basé en France Besoin de suivi avancement travaux (Quantité + qualité) Architecture en couche Technologies : Struts, Spring, Hibernate - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 48
49
Architecture Model presentation service persist - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 49
50
Projet Maven multi-modules
Chef de projet principal : vous ! - Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 50
51
Projet Maven multi-modules
(Composition) Mvn install sur le parent entraîne aussi mvn install sur modules enfant - Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 51
52
Focus couche persistence :
les sources - Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 52
53
Focus couche persistence : les fichiers de propriétés
- Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 53
54
Focus couche persistence :
les dépendences - Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 54
55
Focus couche persistence :
relation avec parent Le module hérite de certaines propriétés du parent (ex : éépendences) . Cela allège le pom.xml du module (Héritage) - Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 55
56
Focus couche persistence :
les rapports - Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 56
57
Focus couche persistence :
code DAO - Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 57
58
Projet Maven : compilation globale
> mvn clean install - Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 58
59
Projet Maven : génération site
> mvn site - Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 59
60
Projet Maven : rapport qualité de code
(checkstyle) - Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 60
61
Projet Maven : rapport respect normes de développement
- Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 61
62
Rapports Maven : Exemples 1/2
Ajouter dans la section <reporting> du pom.xml - Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 62
63
Rapports Maven : Exemples 2/2
Ajouter dans la section <reporting> du pom.xml - Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 63
64
Gestionnaire repository Maven
Offre du marché : Archiva : Artifactory : Nexus : par équipe Maven, + moderne, nombreux plugins Critères d’évaluation Cycle de livraison Modèle de déploiement (war) Proxy/Cache de repositories (maven central, codehaus..) Règles d’inclusion / exclusion Conversion à la volée de Maven2/Maven1 integration eclipse (Uniquement index Nexus) Recherche/indexation Matrice de comparaison : - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 64
65
Liens utiles MAVEN Site Maven : http://maven.apache.org
Maven book (pdf) : Anglais : Plugin Eclipse (m2eclipse): Tutoriel Maven Objis : - Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 65
66
RAPPEL définition intégration continue ?
Technique puissante permettant dans le cadre du développement d’un logiciel en équipes: Garder en phase les équipes de dév. Limiter risques Limiter la complexité A intervalles réguliers, vous allez construire (build) et tester la dernière version de votre logiciel Parrallèlement, chaque développeur teste et valide (commit) son travail en ajoutant son code dans un lieu de stockage unique. - Formation INTEGRATION CONTINUE - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 66
67
Exemple de produits serveurs intégration continue
CruiseControl : Le plus ancien. Couplage historique avec ANT + intégration repositories marché :cvs,svn,cc,vss… + plugins pour intégration Maven1, Maven2, Nant + nombreuses notifications :mail,ftp,rss,im,blog,x10 + builds parrallèles et distribués - courbe d’apprentissage & prise en main Hudson : + prise en main très rapide (hudson.war) + Administration full web & intuitive + intégration avec Bugzilla - faible intégration repositories (cvs/svn en natif). Ajouter plugins - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 67
68
Critères de comparaison de serveurs d’intégration continue
Matrice de comparaison serveurs Critères comparaison : Combien de serveurs gestion version supportés ? Combien de stratégies de notification ? Combien d’outils de build supportés ? Capacité à réaliser des builds en parralèle ? Capacité à réaliser des builds distribués ? Capacité à réaliser builds manuel ou planifiés ? Intégration avec outil gestion bug ? Intégration IDE ? Facilité d’installation ? Administration ? - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 68
69
Configuration CruiseControl
Configuration manuelle : fichier CC_HOME\config.xml <project> : nom du projet (attribut ‘name’) <publishers> : méthodes notifications résultat build <bootstratppers> : quelle tache avant le build ? <modificationset> : où sont les sources à scruter ? <schedule> : que lancer (script ant, maven…) <log> : pour affichage logs build sur console web Configuration graphique avec CC-Config Instructions : cc-config.sourceforge.net/install.html - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 69
70
Exemple configuration
- INTEGRATION CONTINUEwww.objis.com - Formation SPRING 70
71
Configuration CruiseControl : Notification par mail
1 - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 71
72
Configuration CruiseControl : projet Maven 2 sous Subversion
Déclaration Accès sources SUBVERSION Récupération source SUBVERSION pour un projet maven2 3 - INTEGRATION CONTINUEwww.objis.com - Formation SPRING 72
73
CruiseControl : détail résultat build
- INTEGRATION CONTINUEwww.objis.com - Formation SPRING 73
74
CC-Config : Configuration & Monitoring graphique
- INTEGRATION CONTINUEwww.objis.com - Formation SPRING 74
75
www.objis.com - Formation SPRINGwww.objis.com - Formation SPRING
Bibliographie SVN Book Editions O’Reilly 407 pages Java Power Tools 932 pages Ant in action Editions Manning 600 pages Maven book 420 pages - Formation SPRINGwww.objis.com - Formation SPRING 120
76
Contact : Douglas Mbiandou
Ingénieur INSA Lyon (2000) 10 ans d'expériences projets SI Architecte / Formateur Java Responsable formations Objis Tél : / - Formation INTEGRATION CONTINUE - Formation SPRINGwww.objis.com - Formation SPRING 76
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.