Formation INTEGRATION CONTINUE 1 Participant : Mr Frdric MULLER
15-19 fvrier 2009 Paris La Dfense Exemplaire Mr Anthony HERBE
Page 2
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING SOMMAIRE A propos dObjis Introduction intgration continue
Grer les sources avec Subversion Automatiser et gnrer rapports avec
MAVEN Intgration continue avec Cruise Control Contact 2
www.objis.com - Formation INTEGRATION CONTINUE
Page 3
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING A propos dobjis Spcialiste formation JAVA depuis 2005 70% de
travaux pratiques Bilan pdagogique individuel Veille technologique
permanente Une approche unique de la formation Expertise, pdagogie,
partage 3 www.objis.com - Formation INTEGRATION CONTINUE
Page 4
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING + de 100 tutoriaux Java/j2ee sur www.objis.com 4
www.objis.com - Formation INTEGRATION CONTINUE Soa, Web Services,
Spring, Struts, Hibernate, Ant, Maven, Nos tutoriaux pour vous
initier Nos formatrions pour matriser
Page 5
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING INTRODUCTION Quest ce que lintgration continue ? Pourquoi
automatiser ? Par o commencer ? Le cycle vertueux de lintgration
continue 5 www.objis.com - Formation INTEGRATION CONTINUE
Page 6
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Quest ce que lintgration continue ? Technique puissante
permettant dans le cadre du dveloppement dun logiciel en quipes de:
Garder en phase les quipes de dv Limiter risques de drive Limiter
la complexit A intervalles rguliers, vous allez construire (build)
et tester la dernire version de votre logiciel. Parralllement,
chaque dveloppeur teste et valide (commit) son travail en ajoutant
son code dans un lieu de stockage unique. 6 www.objis.com -
Formation INTEGRATION CONTINUE
Page 7
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Pourquoi automatiser ? Gagner du temps Vous ne fates pas de
taches rptitives Gagner en confiance Indpendant de votre efficacit
du moment Procdures rptables Diminue le besoin de documentation
Pour nouveaux entrants projet, utiliser scripts ! et + en analysant
le script. 7 www.objis.com - Formation INTEGRATION CONTINUE
Page 8
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Par o commencer ? 1) Outil centralis gestion versions code
sources Lieu unique de partage Retour arrires, snapshots, branches
2) Tests unitaires automatiss Chaque dveloppeur 3) Scripts Cot
serveur pour automatiser (Ex : crontab) 4)Outils de communication
Mail, Tl, Rss 8 www.objis.com - Formation INTEGRATION CONTINUE
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Grer les sources avec SUBVERSION Introduction et problme
rsoudre Concepts fondamentaux Subversion au jour le jour Branches
et Tags Administration Ressources et liens utiles 10 www.objis.com
- Formation INTEGRATION CONTINUE
Page 11
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Introduction Subversion est un systme de contrle 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
diffrentes versions de ces documents retours arrire (undo) vers
versions plus anciennes, suivi modifications au cours du temps. 11
www.objis.com - Formation INTEGRATION CONTINUE
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Copie de travail (svn checkout) 19 Formation INTEGRATION
CONTINUE
Page 20
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Subversion au jour le jour Mettre jour votre copie de
travail svn update Raliser des modifications svn add svn delete svn
copy svn move Examiner vos changements svn status svn diff Publier
vos changements svn commit 20 Formation INTEGRATION CONTINUE
Page 21
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Dsactivation cache login/passwd Par dfaut, et pour vous
viter chaque fois de fournir login/pwd, Subversion met en cache
version cripte login/pwd Rpertoire %APPDATA%/Subversion/auth
c:\Documents And Settings\douglas\Appli_Datac:\Documents Fichier
'conf' store-auth-creds = no 21 www.objis.com - Formation
INTEGRATION CONTINUE
Page 22
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Repository & projets Cration : 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"
Contrle daccs au repository conf\svnserve.conf et conf\passwd
Organisation repository & projet 1 repository par projet ? 22
www.objis.com - Formation INTEGRATION CONTINUE
Page 23
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Rvisions 23 www.objis.com - Formation INTEGRATION CONTINUE
Ds quun fichier est modifi, cest la rvision de tous les fichiers
qui sincrmente (diffrence forte avec CVS)
Page 24
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Branches et Tags 24 www.objis.com - Formation INTEGRATION
CONTINUE
Page 25
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Branches et Tags 25 www.objis.com - Formation INTEGRATION
CONTINUE Bonne pratique : rpertoires trunk, tags, branches pour
chaque projet
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Branches et tags 28 Cration dun tag svn copy monprojet/trunk
monprojet/tags/release-1.0-snapshot Cration dune branche de
dveloppement 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 prcdente svn merge r 16:11
www.objis.com - Formation INTEGRATION CONTINUE
Page 29
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Administration Subversion svnadmin Cration de repository
Oprations de maintenance svnlook Examiner rvisions (-r) &
transactions (-t) Utilis typiquement par hooks (pr/post commit)
svnlook revision, svnlook t svnlook info /var/svn/repos r 19
auteur, date, nb caractre dans log 29 www.objis.com - Formation
INTEGRATION CONTINUE
Page 30
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Liens utiles SUBVERSION PDF SVN BOOK :
http://svnbook.red-bean.com/http://svnbook.red-bean.com/ Site
Subversion :
http://subversion.tigris.org/http://subversion.tigris.org/ Client
svn Subclipse
http://subclipse.tigris.org/http://subclipse.tigris.org/ plugin
Eclipse 3.x Client svn windows Tortoise SVN
http://tortoisesvn.tigris.org/ 30 www.objis.com - Formation
INTEGRATION CONTINUE
Page 31
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Gestion de projet avec MAVEN Dfinition pour un dveloppeur
Dfinition pour un chef de projet Comparaison avec ANT Dmo
application multi-modules internationale www.objis.com - Formation
INTEGRATION CONTINUE 31
Page 32
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Quest ce que MAVEN ? Pour dveloppeur/concepteur : outil de
build Pour Chef de projet : outil de gestion de projet Maven est un
outil de gestion projet caractris par le modle POM (Project Object
Model) Un ensemble de standards Un cycle de vie de projet Un systme
de gestion des dpendences Une stratgie d'excution d'objectifs
(goals) standard chaque phase d'un projet Un ensemble de plugins
implmentant des services www.objis.com - Formation INTEGRATION
CONTINUE 32
Page 33
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING MAVEN : les conventions Proprits 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 www.objis.com - Formation INTEGRATION
CONTINUE 33
Page 34
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING MAVEN : les conventions Dans fichier pom.xml, vous dcrivez
votre projet : Quelle licence ? ( ) Quels dveloppeurs ? ( ) Quelles
dpendences ? ( ) Quel outil gestion des sources ? ( ) Quel site web
? ( ) Quels plugins ( ) Vous dfinissez de faon unique votre projet,
en lui associant des 'coordones' = ensemble d'identifiants :
GroupId : groupe ds lequel le projet se trouve ArtifactId : nom du
projet Version : version du projet www.objis.com - Formation
INTEGRATION CONTINUE 34
Page 35
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING MAVEN : les conventions Coordonnes MAVEN www.objis.com -
Formation INTEGRATION CONTINUE 35
Page 36
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING MAVEN : POM (Project Object Model) Gestion de dpendences Via
'coordonnes' maven de la dpendence Repositories distants Une
dpendance peux se trouver sur repository distant (Ex :.jar sur
autre serveur) Rutilisabilit Plugins Maven (Installation,
configuration, personalisation) Portabilit Intgration avec IDE :
Netbeans, Eclipse, jBuilder... Recherche simplifie d'artifacts
mvnrepository.com ou index Nexus www.objis.com - Formation
INTEGRATION CONTINUE 36
Page 37
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Comparaison ANT / MAVEN MAVEN a des conventions. Il sait dja
o sont les sources, les tests, les fichiers de config... Classes
cres dans target/classes Cration de Jars. MAVEN est dclaratif. Tout
ce que vous avez faire est de crer un fichier pom.xml et mettre vos
sources dans le rpertoire par dfaut. Un projet MAVEN possde un
cycle vie, que vous invoquez lorsque vous lancez mvn install. Maven
execute un ensemble d'instructions associes au cycle de vie du
projet www.objis.com - Formation INTEGRATION CONTINUE 37
Page 38
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Comparaison ANT / MAVEN Cibles ANT 38
Page 39
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING MAVEN : plugin, goal, Mojo. Exemple avec le plugin help Le
plugin help possde 4 goal (taches) Chaque goal implment 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 dun projet maven (pom.xml) www.objis.com - Formation
INTEGRATION CONTINUE 39
Page 40
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Cibles Maven # mvn compile Compilation dans target/classes #
mvn package Cration du Jar # mvn install Cration du Jar et install.
Repository local $USER_HOME/.m2/repository # mvn package Cration du
Jar # mvn clean Suppression du rpertoire target www.objis.com -
Formation INTEGRATION CONTINUE 40
Page 41
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Maven : cycle de vie et relation Phases / Plugins
www.objis.com - Formation INTEGRATION CONTINUE 41
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Sections principales dun pom.xml Coordonnes Maven
Construction : Plugins phase build : Gnration de rapports :
Stockage artifacts (livrables) : Dpendances : Optimisations
www.objis.com - Formation INTEGRATION CONTINUE 43
Page 44
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Dpendances : plugin dependency www.objis.com - Formation
INTEGRATION CONTINUE mvn dependency:resolve (lister dpendances) mvn
dependency:tree (arbre des dpendances) mvn dependency:tree -X
(arbre : mode debug) Utile pour rsolution de pb Equivalent
graphique via plugin m2eclipse 44
Page 45
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Plugin Eclipse m2eclipse www.objis.com - Formation
INTEGRATION CONTINUE Cration projet Maven Intgration avec serveur
gestion sources Combinaison plugins Subclipse / m2eclipse
Synchronisation dpendences eclipse / maven Editeur pom.xml Livre
maven book Instal. dpendances/plugin (index Nexus) Graphe de
dpendances 45
Page 46
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Plugin Eclipse m2eclipse : exemple graphe dpendances
www.objis.com - Formation INTEGRATION CONTINUE 46
Page 47
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Plugin Eclipse m2eclipse : lindex Nexus en action pour
cration projet www.objis.com - Formation INTEGRATION CONTINUE
47
Page 48
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Exemple de projet multi modules Plusieurs quipes de
dveloppements France, Sude, Maroc, Brsil, Italie, USA Chef de
projets bas en France Besoin de suivi avancement travaux (Quantit +
qualit) Architecture en couche Technologies : Struts, Spring,
Hibernate www.objis.com - Formation INTEGRATION CONTINUE 48
Page 49
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Architecture 49 service Model presentati on persist
www.objis.com - Formation INTEGRATION CONTINUE
Page 50
www.objis.com - Formation SPRINGwww.objis.com - Formation
SPRING Projet Maven multi-modules 50 Chef de projet principal :
vous ! www.objis.com - Formation INTEGRATION CONTINUE
Page 51
www.objis.com - Formation SPRINGwww.objis.com - Formation
SPRING Projet Maven multi-modules 51 (Composition) Mvn install sur
le parent entrane aussi mvn install sur modules enfant
www.objis.com - Formation INTEGRATION CONTINUE
Page 52
www.objis.com - Formation SPRINGwww.objis.com - Formation
SPRING Focus couche persistence : les sources 52 www.objis.com -
Formation INTEGRATION CONTINUE
Page 53
www.objis.com - Formation SPRINGwww.objis.com - Formation
SPRING Focus couche persistence : les fichiers de proprits 53
www.objis.com - Formation INTEGRATION CONTINUE
Page 54
www.objis.com - Formation SPRINGwww.objis.com - Formation
SPRING Focus couche persistence : les dpendences 54 www.objis.com -
Formation INTEGRATION CONTINUE
Page 55
www.objis.com - Formation SPRINGwww.objis.com - Formation
SPRING Focus couche persistence : relation avec parent 55 (Hritage)
Le module hrite de certaines proprits du parent (ex : pendences).
Cela allge le pom.xml du module www.objis.com - Formation
INTEGRATION CONTINUE
Page 56
www.objis.com - Formation SPRINGwww.objis.com - Formation
SPRING Focus couche persistence : les rapports 56 www.objis.com -
Formation INTEGRATION CONTINUE
Page 57
www.objis.com - Formation SPRINGwww.objis.com - Formation
SPRING Focus couche persistence : code DAO 57 www.objis.com -
Formation INTEGRATION CONTINUE
www.objis.com - Formation SPRINGwww.objis.com - Formation
SPRING Projet Maven : gnration site 59 > mvn site www.objis.com
- Formation INTEGRATION CONTINUE
Page 60
www.objis.com - Formation SPRINGwww.objis.com - Formation
SPRING Projet Maven : rapport qualit de code (checkstyle) 60
www.objis.com - Formation INTEGRATION CONTINUE
Page 61
www.objis.com - Formation SPRINGwww.objis.com - Formation
SPRING Projet Maven : rapport respect normes de dveloppement 61
www.objis.com - Formation INTEGRATION CONTINUE
Page 62
www.objis.com - Formation SPRINGwww.objis.com - Formation
SPRING Rapports Maven : Exemples 1/2 62 www.objis.com - Formation
INTEGRATION CONTINUE Ajouter dans la section du pom.xml
Page 63
www.objis.com - Formation SPRINGwww.objis.com - Formation
SPRING Rapports Maven : Exemples 2/2 63 www.objis.com - Formation
INTEGRATION CONTINUE Ajouter dans la section du pom.xml
Page 64
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Gestionnaire repository Maven Offre du march : Archiva :
http://archiva.apache.org Artifactory : http://jfrog.org Nexus :
http://nexus.sonatype.orghttp://nexus.sonatype.org par quipe Maven,
+ moderne, nombreux plugins Critres dvaluation Cycle de livraison
Modle de dploiement (war) Proxy/Cache de repositories (maven
central, codehaus..) Rgles dinclusion / exclusion Conversion la
vole de Maven2/Maven1 integration eclipse (Uniquement index Nexus)
Recherche/indexation Matrice de comparaison :
http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix
64 www.objis.com - Formation INTEGRATION CONTINUE
Page 65
www.objis.com - Formation SPRINGwww.objis.com - Formation
SPRING Liens utiles MAVEN Site Maven :
http://maven.apache.orghttp://maven.apache.org Maven book (pdf) :
Anglais : http://www.sonatype.com/bookhttp://www.sonatype.com/book
Plugin Eclipse (m2eclipse):
http://maven.apache.org/eclipse-plugin.html Tutoriel Maven Objis :
http://www.objis.com/formation-java/tutoriel-formation-maven-2.html
65 www.objis.com - Formation INTEGRATION CONTINUE
Page 66
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING RAPPEL dfinition intgration continue ? Technique puissante
permettant dans le cadre du dveloppement dun logiciel en quipes:
Garder en phase les quipes de dv. Limiter risques Limiter la
complexit A intervalles rguliers, vous allez construire (build) et
tester la dernire version de votre logiciel Parralllement, chaque
dveloppeur teste et valide (commit) son travail en ajoutant son
code dans un lieu de stockage unique. 66 www.objis.com - Formation
INTEGRATION CONTINUE
Page 67
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Exemple de produits serveurs intgration continue
CruiseControl :
http://cruisecontrol.sourceforge.nethttp://cruisecontrol.sourceforge.net
Le plus ancien. Couplage historique avec ANT + intgration
repositories march :cvs,svn,cc,vss + plugins pour intgration
Maven1, Maven2, Nant + nombreuses notifications
:mail,ftp,rss,im,blog,x10 + builds parrallles et distribus - courbe
dapprentissage & prise en main Hudson :
http://hudson-ci.orghttp://hudson-ci.org + prise en main trs rapide
(hudson.war) + Administration full web & intuitive + intgration
avec Bugzilla - faible intgration repositories (cvs/svn en natif).
Ajouter plugins 67
Page 68
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Critres de comparaison de serveurs dintgration continue
Matrice de comparaison serveurs
http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix
Critres comparaison : Combien de serveurs gestion version supports
? Combien de stratgies de notification ? Combien doutils de build
supports ? Capacit raliser des builds en parralle ? Capacit raliser
des builds distribus ? Capacit raliser builds manuel ou planifis ?
Intgration avec outil gestion bug ? Intgration IDE ? Facilit
dinstallation ? Administration ? 68
Page 69
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Configuration CruiseControl Configuration manuelle : fichier
CC_HOME\config.xml : nom du projet (attribut name) : mthodes
notifications rsultat build : quelle tache avant le build ? : o
sont les sources scruter ? : que lancer (script ant, maven) : pour
affichage logs build sur console web Configuration graphique avec
CC-Config Instructions : cc-config.sourceforge.net/install.html
http://cc-config.sf.net/release/cruisecontrol-gui.jnlp 69
Page 70
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Exemple configuration 70
Page 71
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Configuration CruiseControl : Notification par mail 1
71
Page 72
www.objis.com - INTEGRATION CONTINUEwww.objis.com - Formation
SPRING Configuration CruiseControl : projet Maven 2 sous Subversion
2 3 Dclaration Accs sources SUBVERSION Rcupration source SUBVERSION
pour un projet maven2 72