Professional Documents
Culture Documents
Xavier.Warzee@Valtech.Fr
http://warzee.fr
Le 9 Octobre 2007
Intégration continue
>Agenda
Motivations
Principes
Conclusion
Intégration continue
>Agenda
Motivations
Principes
Conclusion
Motivations au niveau entreprise
Marketing
• Demande de démonstrations non planifiées
Budgets
• Démontrer rapidement l’avancement d’un projet
Projets gérés par tranches, par lots conditionnels : focus sur le fonctionnel important !
Ressources, équipes
• Coordination d’équipes distribuées : le reporting projet ne suffit pas !
Il faut partager les mêmes éléments d’évaluation de l’état d’avancement d’un projet
• Des changements dans l’organisation : fusion/acquisition, restructuration, …
Nécessité d’améliorer :
• La qualité des livrables
Réduire la complexité ( meilleure maintenabilité)
Adéquation
• La traçabilité
des changements
des déploiements
• La productivité
Se focaliser sur le métier, pas sur la technique
Principes « agiles »
• Fabriquer souvent
• Tester souvent (tests unitaires)
• Tester les performances souvent
• Intégrer souvent dans le SI
Intégration continue
>Agenda
Motivations
Principes
Conclusion
Formalisation par Martin Fowler & Kent Beck, 2000
« Continuous Integration is a software development
practice where members of a team integrate their
work frequently, usually each person integrates at
least daily - leading to multiple integrations per day. »
« Each integration is verified by an automated build
(including test) to detect integration errors as
quickly as possible. »
Many teams find that this approach
leads to significantly reduced integration problems
and allows a team to develop cohesive software more rapidly.
Principes
« Build » ?
• Compiler
• Tester (tests unitaires, d’intégration , de performance)
• Inspecter (revue de code)
• Déployer
• Documenter
• Notifier (email, SMS, RSS, etc.)
Principes
4
6
5
1 Check In (changements)
1 3
2 Détection des changements (sur les logs)
2
3 Update de l’espace de travail du serveur d’intégration
4 Exéctution du « build »
• compilation des sources,
• regénération des ressources,
Référentiel de • tests,
6 Déploiement de l’application
Les différents types de « build »
Cf. SDTimes « Will the Build Bottleneck Put the Brakes on Agile? »
(http://www.sdtimes.com/article/special-20050815-01.html)
Intégration continue
>Agenda
Motivations
Principes
Conclusion
Processus d’intégration continue : enjeux
Comment contrôler la
qualité durant les étapes
de « build » ?
automatiser le
processus complet en
tenant compte des
aspects distribués
plateformes de
développement,
plateformes d’intégration,
plateformes d’acceptation,
plateformes de pré-
production,
etc.
Processus d’intégration
Processus d’intégration continue
>Côté développeur
Plateforme de développement
• « Local build » : les développeurs construisent le logiciel sur leur
poste de travail
Compilation des sources, exécution des tests, inspection du code, etc.
Si possible, utilisation des mêmes commandes de « build » que celles du serveur
d’intégration continue (IC)
Livraison officielle
Processus d’intégration continue
> En résumé
Motivations
Principes
Conclusion
Focus sur l’inspection du code
> Inspection par les tests
Plateforme de développement
Plateforme
Plateforme
Plateforme d’acceptation
de
Station Machine d’intégration client
pré-acceptation
de travail d’assemblage
- Tests unitaires - Tests d’intégration - Tests Fonctionnels (manuel) - Tests fonctionnels - Tests fonctionnels
d’intégration (Base de
données)
Automatisation possible des tests fonctionnels avec des
« Build » en journée
• Un « build » de journée est lancé en moyenne toutes les 2 heures :
le temps est donc compté pour lancer des tests !
• Ces tests doivent solliciter toutes les parties d’une application sans
pour autant être exhaustifs
* Article de Steve McConnell, IEEE Software, Vol. 13, No. 4, July 1996
Focus sur l’inspection du code
> Inspection par les tests
Quoi mesurer ?
• Taux de couverture du code,
• Métriques de complexité (McCabe, …),
• Détection de bugs (Findbugs, PMD, …)
Comment mesurer ?
• Maven, xUnit, Agitar, Sonar, Cobertura, …
Motivations
Principes
La solution Cruisecontrol
Conclusion
La solution CruiseControl
• RSS
Référentiel • e-mail
1 Cruisecontrol 3 • Jabber
de source
• x10
• web
2
• Compiler
ANT • Tester
• Inspecter
Maven • Déployer
Shell • Documenter
1 Détecte les modifications
2 Lance et contrôle la construction
3 Publie les résultats
3 développeurs
pendant
6 mois
=
980 builds
( 8 / jours )
La solution CruiseControl
> l’écosysteme
Extension Firefox
Widgets
• Widget Apple
• Widget Yahoo
Windows SysTray
• JCCTray, CCTray (.Net)
La solution CruiseControl
Outil de communication
« Machine à feedback »
Intégration continue
>Agenda
Motivations
Principes
La solution Cruisecontrol
Conclusion
Conclusion
L’intégration continue
• Moyen efficace d’éviter le « big-bang » d’une phase
d’intégration