17
Concept de l’Intégration Continue Publié par Frédéric Sagez Dernière mise à jour le 16/11/2010

Concept de l’Intégration Continue

Embed Size (px)

DESCRIPTION

Réflexion sur l'Intégration Continue en phase de projet

Citation preview

Page 1: Concept de l’Intégration Continue

Concept de l’Intégration Continue

Publié par Frédéric Sagez

Dernière mise à jour le 16/11/2010

Page 2: Concept de l’Intégration Continue

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

Page 3: Concept de l’Intégration Continue

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

Page 4: Concept de l’Intégration Continue

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

Page 5: Concept de l’Intégration Continue

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

Page 6: Concept de l’Intégration Continue

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

Page 7: Concept de l’Intégration Continue

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

Page 8: Concept de l’Intégration Continue

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

Page 9: Concept de l’Intégration Continue

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

Page 10: Concept de l’Intégration Continue

La solution Cruise Control

10

Page 11: Concept de l’Intégration Continue

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

Page 12: Concept de l’Intégration Continue

La solution Team City

12

Page 13: Concept de l’Intégration Continue

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

Page 14: Concept de l’Intégration Continue

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.

Page 15: Concept de l’Intégration Continue

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.

Page 16: Concept de l’Intégration Continue

Conclusion (4/4)

16

Et cela permet aussi de connaitre de façon certaine le ou les développeurs incriminés…

Page 17: Concept de l’Intégration Continue

Pour finir…

Le concept de l’Intégration Continue et cette présentation ont été utilisés sur le projet TRANS@actions.

17