Upload
frederic-sagez
View
131
Download
0
Embed Size (px)
DESCRIPTION
Réflexion sur l'Intégration Continue en phase de projet
Citation preview
Concept de l’Intégration Continue
Publié par Frédéric Sagez
Dernière mise à jour le 16/11/2010
Introduction
La solution BluePrints est utilisée pour identifier et organiser des unités logiques de travail qui seront exécutées pendant certaines phases d’un projet. Ces unités logiques de travail seront ensuite planifiées et gérées tout au long du cycle de vie du projet.
Depuis le début de la création de la plate-forme Java/JEE, le programme Java BluePrints défini le modèle de programmation d'application pour les solutions de bout en bout en utilisant la technologie Java.
Les outils BluePrints indique les lignes directrices, les modèles et le code pour les scénarios d'application dans le monde réel, vous permettant de construction robuste, évolutive et des solutions portables.
Les BluePrints sont disponibles gratuitement vous permettant ainsi d'apprendre les plans et la réutilisation du code dans vos propres applications.
2
Java BluePrints : le renforcement des programmes Java portables
3
Rational Software ArchitectRational Software Architect
JUnit (SqlUnit, HTTPUnit)JUnit (SqlUnit, HTTPUnit)
CoberturaCobertura
Maven 2Maven 2
CruiseControlCruiseControl
EclipseEclipse
CheckstyleCheckstyle
PMDPMD
+ FindBugs+ FindBugs
Automatisation des builds et test de regressions
Test unitaire et d’assemblage
Analyse et couverture des tests
Environnement de développement intégré
Profilage automatisé de code statique
Environnement de conception intégré
JavadocJavadoc
Génération de documentation automatique
Intégration Continue
L'intégration continue est une technique consistant à vérifier qu’à chaque modification de code source que le résultat des modifications ne produit pas de régression de l'application en cours de développement : c’est maintenir une source unique de référentiel. Elle est issue de la pratique de l’eXtreme Programming, elle permet l’intégration de développements en continue.
Avantages Intégration périodique multiplateformes (Scheduling) Mise à jour du code depuis un gestionnaire de versioning Vérification, compilation et tests unitaires d’une application Gestion rigoureuse des développements : permet d’assurer la cohérence d‘une application La compilation du code source n'est plus dépendante de la machine d'un développeur Déploiement d’une application sur un serveur distant Reporting des résultats
Inconvénients Nécessite un développement rigoureux de la part des développeurs Certains produits ne sont pas « multi-techno » ou « 100% » open source Nécessite une administration du serveur d’intégration continue (Serveur dédié)
4
Principe de fonctionnement de l’Intégration Continue
INSPECTIONINSPECTION
COMPILATIONCOMPILATION
PACKAGINGPACKAGING
DEPLOIEMENTDEPLOIEMENT
RE
FE
RE
NT
IEL
DE
S
OU
RC
ES
RE
FE
RE
NT
IEL
DE
S
OU
RC
ES
5
1 - Détection de nouvelles intégrations dans le référentiel de sources
2 Création du Build suivant les étapes de construction de l’application
3 - Publication des résultats
TESTTEST
1
2
3
1
3 2
Les serveurs d’Intégration Continue
Cruise Control
Open source et gratuit : il permet de tester des applications JEE et des applications en .Net.Avantage : supporte bien plusieurs petits projetsInconvénient : plusieurs outils open source passent sous licence commerciale
Team City
Open source et gratuit (avec limitation ou sous licence) : il permet de tester des applications JEE et des applications en .Net.Avantage : interfaçage et intégration pratique avec les logiciels MicrosoftInconvénient : nécessite d’acheter des licences pour utiliser pleinement le logiciel
Hudson
Open source et gratuit : il permet de tester des applications JEE.Avantage : la multitude de plug-ins que l’on peut développer soi-mêmeInconvénient : un « build » instable peut quand même être déployé sur un serveur distant
Continuum (Fondation Apache)
Open source et gratuit : il permet de tester des applications JEE.Avantage : constructions sur d’autres machines des « build » en mode distribué grâce à des agents de constructionsInconvénient : interface peu conviviale
6
Démarrer un projet Java avec un serveur d’intégration continue
Il est nécessaire d’avoir des éléments utiles pour bien démarrer un projet Java avec un serveur d’intégration continue : o Il faut un gestionnaire de code source,o Un Serveur d’Intégration continue,o La nécessité de vérifier le code source et de pouvoir le compiler, (mais cela n’est pas une nécessité)o De permettre l’exécution de tests unitaires,o De « Packager » et déployer un « build » sur un serveur distant,o D’utiliser un Dashboard de suivi des opérations,o De communiquer les résultats sous forme de compte rendu,o De pouvoir alerter par n’importe qu’elle type de flux les différents intervenants (email, SMS, flux RSS., etc.)
7
Exemple d'intégration d'applications en mode continue
8
Rapports
CHECKOUT / COMMIT
Poste(s) de développement
Serveur LDAP
Publication
Serveur distantDéploiement
Serveur d’Intégration
Continue (CIS)
INTEGRATION CONTINUE
Serveur de versioning
Compte rendu
Détection de la MAJ
du référentiel de source
Cruise Control
Avantages
II est le plus ancien serveur d’intégration continue. Il bénéficie ainsi d’une douzaine de plugins facilitant son intégration avec de nombreuses solutions de gestion de configuration et de stratégies de build.
Il s’intègre parfaitement avec des outils de gestion de code source (exemple: CVS, SVN, ClearCase, etc.) et aussi avec des outils de build . (exemple: Ant, NAnt, Maven, etc.)
Inconvénients
Là ou d’autres produits (Hudson, Continuum ou Team City) se configurent graphiquement, il encapsule toute la configuration dans un fichier unique de configuration. (Fichier config.xml)
Quelques produits tiers contribuent cependant à une meilleur administration :• Une interface swing CC-Config qui permet d’administrer Cruise Control, en mettant à jour de façon persistante le fichier config.xml.
• Un plugin Firefox Cruise Control Monitor qui permet le « Monitoring » du serveur d’intégration continue.
Téléchargement sur le site de l’éditeur ThoughtWorks : http://cruisecontrol.sourceforge.net/download.html
9
La solution Cruise Control
10
Team City
TeamCity est un système d'intégration continue dont le principal mérite est la facilité de mise en œuvre, d'être très graphique, et de contenir quelques très bonnes idées.
Avantages
•L'interface graphique « full » Web 2.0 et l'aspect visuel général•Les « COMMIT » pré-testés•Les différents Runners (construction de projet, recherche de duplicats, inspection, etc.)
•La possibilité de tester les « build » sur le serveur avant de faire un check-in• L’intégration aux principaux environnements de développements (Plugin sous Eclipse et Microsoft Visual Studio)• Statistiques très complètes
Inconvénient(s)• Il n’est pas tout à fait gratuit, il existe une version « Entreprise » payante. (Utilisation limitée à 20 projets de configurations avec 20 utilisateurs et 3 agents)
Téléchargement sur le site de l’éditeur Jet Brains : http://www.jetbrains.com/teamcity/download/index.html
11
La solution Team City
12
Conclusion (1/4)
L’intégration continue est une pratique qui consiste à mettre à jour périodiquement, voir continuellement un environnement par un système de « build ». Elle permet de détecter immédiatement les bugs et de remonter des alertes. Cela permet de fournir au responsable de projet un état de l’avancement en temps réel du développement. On peut également y intégrer des tests unitaires qui permettront de vérifier que les nouvelles modifications n’ont pas d’effets de bords.
13
Conclusion (2/4)
14
Le processus de l’intégration continue a un mécanisme de feedback et toute l’équipe connaît le statut du dernier build, ce qui permet entre autres de savoir si le projet est dans le « vert » ou pas.
Conclusion (3/4)
15
De même, le feedback permet d’identifier des bugs au plus tôt car les impacts peuvent être très importants.
Conclusion (4/4)
16
Et cela permet aussi de connaitre de façon certaine le ou les développeurs incriminés…
Pour finir…
Le concept de l’Intégration Continue et cette présentation ont été utilisés sur le projet TRANS@actions.
17