Upload
teejug
View
1.376
Download
3
Embed Size (px)
Citation preview
26/04/2008 http://my-garbage-collector.blogspot.com/ 1
L’intégration continue
Présenté par: Hamdi MAKNITeeJUG memberTeeJUG member
http://my-garbage-collector.blogspot.com/ 226/04/2008
Feuille de route
� Scénario1� Scénario2� L’intégration continue:
� principes,� avantages,� outils
� Étude de cas� Conclusion
http://my-garbage-collector.blogspot.com/ 326/04/2008
Scénario 1
� Dev dans une équipe de plusieurs développeurs
� Un système avec plusieurs applications
� Interactions avec plusieurs autres systèmes
� Évolutions des besoins des clients
� Livraisons fréquentes
http://my-garbage-collector.blogspot.com/ 426/04/2008
Scénario 1
� problèmes:
�Mauvaise synchronisation entre les dev de la même équipe
�Manque de suivie des évolutions des applications dépendantes
�Ne pas pouvoir suivre les besoins des clients
�Temps de réaction énorme en cas de pbm
http://my-garbage-collector.blogspot.com/ 526/04/2008
Scénario 1
�Conséquences:
�Code pas sûr
�Qualité de l’application non assurée
�Incohérence entre les applications
�Temps perdu
�Retards de livraison
�Argents perdu
http://my-garbage-collector.blogspot.com/ 626/04/2008
Scénario 1
� Décisions prises:
�Contrôle et partage des source et des dépendances
�Écrire des testes unitaires et d’intégration
�Automatiser les tests
�Automatiser les builds
�Environnements de Dev, Integ, Recette, Prod
http://my-garbage-collector.blogspot.com/ 726/04/2008
Scénario 2
http://my-garbage-collector.blogspot.com/ 826/04/2008
Scénario 2
� Synchronisation avec le SCM
� Récupérer les dépendances du répo
� Écrire le code du nouveau service
� Écrire le test qui couvre le nouveau code
� Tester en locale
� Commiter des modifications en locale
http://my-garbage-collector.blogspot.com/ 926/04/2008
Scénario 2
� Détection automatique les modifications sur le SCM
� Compilation automatique de l’application en question
� Lancement automatique des tests
� Création automatique du build
� Génération automatique de rapport
� Notification automatique par email
http://my-garbage-collector.blogspot.com/ 1026/04/2008
Scénario 2
� Qui va automatiser tout ça?
http://my-garbage-collector.blogspot.com/ 1126/04/2008
Continuous Integration:c'est quoi?
� Méthode Agile, extreme programming
� Un système, un ensemble d'outils
� Ensemble de pratiques, d'habitudes
� Coûteux, mais rentable
http://my-garbage-collector.blogspot.com/ 1226/04/2008
Continuous Integration:principes
� Partager la source dans un SCM
� Synchronisation fréquente du code local et code partagé
� Écrire des tests d'intégration
� Lancer les tests sur chaque maj du code
� Releases fréquents
http://my-garbage-collector.blogspot.com/ 1326/04/2008
Continuous Integration: avantages
� Code cohérent
� Code qui compile « tout le temps »
� Code bien testé
� Meilleur qualité du produit
http://my-garbage-collector.blogspot.com/ 1426/04/2008
Continuous Integration: avantages
� Suivie en temps réel de l'évolution du projet
� Coût de résolution des bugs réduit
� Minimiser le temps de développement, de livraison, et de maintenance
� Gain d'argent
http://my-garbage-collector.blogspot.com/ 1526/04/2008
Continuous Integration: outils
� SCM: Source Control Management�SVN (subversion)
�CVS
�ClearCase
� Gestion de dépendances: �maven
� Ivy
� ...
http://my-garbage-collector.blogspot.com/ 1626/04/2008
Continuous Integration: outils
� Assemblage et building�maven
�Ant
� ...
� Test
�JUnit
�DBunit
�Selenium
http://my-garbage-collector.blogspot.com/ 1726/04/2008
Continuous Integration: outils
� Serveur d'intégration Continue
�CruseControle
�Bamboo
�Hudsen
�Continuum
http://my-garbage-collector.blogspot.com/ 1826/04/2008
Continuous Integration: best practices
� Commit fréquent
� Merge fréquent des branches
� Release fréquent
� Test sur chaque commit
� Réactivité aux bugs
� Multiplier les tests
� Système de suivi des fiches pour chaque environnement
http://my-garbage-collector.blogspot.com/ 1926/04/2008
Cas concret: contexte
� contexte SOA
� 5 systèmes d'informations en intéraction
� 5 équipes de développeurs
� 15 applications: 6 front et 9 back (Web Services)
� Plus de 200 WS interdépendants
http://my-garbage-collector.blogspot.com/ 2026/04/2008
Cas concret: contexte
� Bamboo
� SVN
� Maven
� Jira
� Junit
� Selenium
http://my-garbage-collector.blogspot.com/ 2126/04/2008
Cas concret: practices
� 6 environnements : dev, pré-intégration, intégration, recette, pré-production, production
� Build sur chaque commit
� Plusieurs tests pour chaque service
� Livraison des clients séparément des implémentations
http://my-garbage-collector.blogspot.com/ 2226/04/2008
Cas concret: practices
http://my-garbage-collector.blogspot.com/ 2326/04/2008
Cas concret: cycle de vie d'un WS
1.Rédaction du contrat se service
2.Préparation du client mocké et testé
3.Test sur la dev
4.Déploiement sur la pré-intégration
5.Release de la version et passage en intég
6.Tests d'intégration
http://my-garbage-collector.blogspot.com/ 2426/04/2008
Cas concret: cycle de vie d'un WS
1.Passage par des branches pour patcher
2.Livraison sur la recette
3.Passage par des branches pour patcher
4.Livraison sur la pré-production
http://my-garbage-collector.blogspot.com/ 2526/04/2008
Cas concret: problèmes rencontrés
� Chantier fonctionnel parallèles
�une branche pour chaque « chantier »fonctionnel et un merge fréquent avec trunk
� Dépendances circulaires entre les WS�Séparer les clients des implémentations
http://my-garbage-collector.blogspot.com/ 2626/04/2008
Cas concret: problèmes rencontrés
� Évolution rapide des besoins et du nombre de clients�???
� Désynchronisation des livraisons entre des différentes applications�???
http://my-garbage-collector.blogspot.com/ 2726/04/2008
Conclusion
� Est ce rentable de passer en CI quelque soit le contexte?
� Est ce que le processus d'intégration continue est un processus idéale pour le développement?
http://my-garbage-collector.blogspot.com/ 2826/04/2008
Presented by Hamdi MAKNI
� Concepteur développeur JAVA/J2EE
� 2008: Consultant J2EE chez GENERALI France
� 2007: Développeur JAVA/J2EE chez voyages-sncf.com
� 2004-2006:Développeur JAVA/J2EE chez Tunisiana
� TeeJUG member
� http://my-garbage-collector.blogspot.com