SlideShare uma empresa Scribd logo
1 de 30
L’ Intégration Continue
Xavier.Warzee@Valtech.Fr
http://warzee.fr
Le 9 Octobre 2007
Intégration continue
>Agenda

Motivations

Principes

Processus d’intégration continue

Focus sur l’inspection du code

Conclusion
Intégration continue
>Agenda

Motivations

Principes

Processus d’intégration continue

Focus sur l’inspection du code

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, …

Besoins : les besoins varient continuellement en fonction
   • Des produits de concurrents éventuels
   • Des changements légaux, règlementaires (contraintes d’importation, de
     confidentialité, etc.)

Besoin d’intégrer les évolutions d’un projet en continu
Motivations au niveau projet

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

Processus d’intégration continue

Focus sur l’inspection du code

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

Fabriquer (build) un projet à chaque changement
   • Intégrer les changements en continue !!!


« 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

                                   Serveur d’intégration                Plateforme de déploiement



                                              Check In (changements)
                                         1
        1                      3
                                          2   Détection des changements (sur les logs)
                           2
                                              Update de l’espace de travail du serveur d’intégration
                                         3

                                         4    Exéctution du « build »
                                                    • compilation des sources,
                                                    • regénération des ressources,
                                                    • tests,
     Référentiel de
                                                    • inspections,
Gestion de configuration
                                                    • déploiements
(Clearcase, CVS, SVN, …)
                                              Notification des résultats (RSS, Email, Blog, Tray, …)
                                         5

                                              Déploiement de l’application
                                         6
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

Processus d’intégration continue

Focus sur l’inspection du code

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)

   • « commit at all time » : à tout moment, les développeurs peuvent
     mettre à jour le référentiel commun de gestion de configuration
     (travail en équipe)

 Référentiel de gestion de configuration
(«source repository »)
   • Ensemble des éléments d’un projet (documents, code, …) gérés en
     configuration
   • Les développeurs mettent à jour le référentiel avec le code, les tests,
     les documents
   • le code doit en principe être compilable
   • les tests doivent en principe être exécuté avec succès
Processus d’intégration continue
> Côté serveur d’intégration continue

« Automated builds integration plateform »
   • Construction automatique de l’application régulièrement, par exemple
     toute les 2 heures
   • Production de rapports (tests, qualité, activités, …) disponibles en
     ligne et/ou par exemple envoyés par messagerie


Livraison d’une « release » en interne régulièrement
   • Par exemple toute les 2 semaines
   • Objectif de cette « release » : faire des tests fonctionnels et/ou de
     performance (stress)


Livraison officielle
Processus d’intégration continue
> En résumé

Automatiser le processus de développement
   • Extraction périodique et automatique des sources du
     référentiel
   • Lancement des tests, calcul de couverture des tests
   • Calcul d’indicateurs (complexité, etc.)
   • Construction du logiciel
   • packaging, déploiement automatisé
Intégration continue
>Agenda

Motivations

Principes

Processus d’intégration continue

Focus sur l’inspection du code

Conclusion
Focus sur l’inspection du code
> Inspection par les tests

                                     Accessible à distance (équipe offshore)




        Plateforme de développement

                                                                                                                        Plateforme
                                                                                              Plateforme
                                                               Plateforme                                              d’acceptation
                                                                                                  de
                                                              d’intégration                                                client
        Station                Machine
                                                                                            pré-acceptation
       de travail            d’assemblage




                             - Tests d’intégration                                          - Tests fonctionnels
  - Tests unitaires                                         - Tests Fonctionnels (manuel)                              - Tests fonctionnels

                                                                                            exécutés par l’équipe de
  (mocks/bouchons)                                                                                                     exécutés par le client
                             - Tests fonctionnels par les   - Tests Techniques
                                                                                            d’intégration (manuel)     (manuel)
                             développeurs
  - Quelques tests                                          /Performance (manuel)

  d’intégration (Base de

  données)
               Automatisation possible des tests fonctionnels avec des

                              outils comme Selenium
Focus sur l’inspection du code
> Inspection par les tests

« 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 !

   • Des tests simples ou « smoke tests »* peuvent être lancés permettant
     de détecter rapidement des disfonctionnements essentiels :
         Fichiers de configuration (XML, propriétés, etc.) inconsistants entre eux ne
          permettant pas de démarrer l’application par exemple
         Ressources tierces inaccessibles (base de données, drivers, etc.)


   • Ces tests doivent solliciter toutes les parties d’une application sans
     pour autant être exhaustifs

   • Typiquement, les tests unitaires sont lancés en journée. Un test
     unitaire ne doit prendre que quelques secondes pour s’exécuter.
         Tests avec ou sans bouchon (mocks)
         Tests sans bouchon : utiliser des frameworks de tests comme TestNG (suites de
          tests lancés en fonction d’autres tests exécutés avec succès !)

 * Article de Steve McConnell, IEEE Software, Vol. 13, No. 4, July 1996
Focus sur l’inspection du code
> Inspection par les tests

« Build » de nuit (nightly build)
   • Exécuter des tests plus exhaustifs !
         100% des tests doivent être exécutés avec succès pour le « build »
          se termine avec succès !!!


   • Ces tests permettent par la suite de réduire les risques à
     l’intégration

   • Comme il y a moins de changements entre 2 « builds », il
     est plus simple
         de diagnostiquer l’origine d’un problème de compilation
         ou de comprendre pourquoi certains tests sont en échec.
Focus sur l’inspection du code
> Métriques, revue de code

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, …


Reste « Quand mesurer » ?
    • Mesurer quotidiennement (« build » de nuit)
    • Eviter de créer un effet tunnel !
Intégration continue
>Agenda

Motivations

Principes

Processus d’intégration continue

Focus sur l’inspection du code

La solution Cruisecontrol

Conclusion
La solution CruiseControl

CruiseControl est un outil
   • Permettant la construction automatisée du logiciel.

   • Indépendant de l’outil de construction
         Shell : utilisation possible de make, gmake, clearmake
         Ant
         Maven


   • Indépendant du gestionnaire de source
            Cvs
        
            Subversion
        
            Clearcase
        
            …
        
La solution CruiseControl

                                                                        • RSS
                                                                        • e-mail
       Référentiel
                                                                        • Jabber
                                    Cruisecontrol
                             1                                 3
        de source
                                                                        • x10
                                                                        • web
                                                2




                                                                    • Compiler
                                                                    • Tester
                                          ANT
                                                                    • Inspecter
                                                    Maven           • Déployer
                                                            Shell   • Documenter
                         Détecte les modifications
                     1

                         Lance et contrôle la construction
                     2

                         Publie les résultats
                     3
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

Détection de problème en amont.
     Détection au checkin.

Evite l’intégration traditionnellement faite en fin de
projet.

Outil de communication
      « Machine à feedback »
Intégration continue
>Agenda

Motivations

Principes

Processus d’intégration continue

Focus sur l’inspection du code

La solution Cruisecontrol

Conclusion
Conclusion

Contrôler la qualité pendant les développement
   • Tester souvent
   • Tester les performances souvent
   • Construire les applications souvent (« build »)


Cruisecontrol est une référence
   • Écosystème signe de reconnaissance et maturité
        Apple Widget, Yahoo Widget, CCTray, …
   • Il existe des solutions opensource plus simple (moins
     souple ?) :
        Bamboo, Continuum, Hudson, etc.
   • Des solutions commerciales existent :
        BuildForge (IBM), OpenMake (Catalyst Systems Corporation), ParaBuild
         (Viewtier Systems)
Conclusion

L’intégration continue
   • Moyen efficace d’éviter le « big-bang » d’une phase
     d’intégration

   • « releases » plus robustes et fonctionnellement
     pertinentes :-)

   • Capitalisation des bonnes pratiques de fabrication du
     logiciel

   • Processus répétable et automatisé de fabrication du
     logiciel

   • L’automatisation permet plus de réactivité

Mais conteúdo relacionado

Mais procurados

Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 
Alphorm.com Formation CEHV9 I
Alphorm.com Formation CEHV9 IAlphorm.com Formation CEHV9 I
Alphorm.com Formation CEHV9 IAlphorm
 
Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)Ahmed-Chawki Chaouche
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menusLilia Sfaxi
 
Applications Android - cours 8 : Gestion des évènements
Applications Android - cours 8 : Gestion des évènementsApplications Android - cours 8 : Gestion des évènements
Applications Android - cours 8 : Gestion des évènementsAhmed-Chawki Chaouche
 
Exigences de qualité des systèmes / logiciels
Exigences de qualité des systèmes / logicielsExigences de qualité des systèmes / logiciels
Exigences de qualité des systèmes / logicielsPierre
 
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Eric SIBER
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche DevopsRomain Chalumeau
 
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...ENSET, Université Hassan II Casablanca
 
CI-Jenkins.pptx
CI-Jenkins.pptxCI-Jenkins.pptx
CI-Jenkins.pptxMEDOBEST1
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyENSET, Université Hassan II Casablanca
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...ENSET, Université Hassan II Casablanca
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Intégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciIntégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciwiemfourati
 

Mais procurados (20)

Cours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateurCours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateur
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Alphorm.com Formation CEHV9 I
Alphorm.com Formation CEHV9 IAlphorm.com Formation CEHV9 I
Alphorm.com Formation CEHV9 I
 
Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menus
 
Jenkins
JenkinsJenkins
Jenkins
 
Applications Android - cours 8 : Gestion des évènements
Applications Android - cours 8 : Gestion des évènementsApplications Android - cours 8 : Gestion des évènements
Applications Android - cours 8 : Gestion des évènements
 
Maven
MavenMaven
Maven
 
Exigences de qualité des systèmes / logiciels
Exigences de qualité des systèmes / logicielsExigences de qualité des systèmes / logiciels
Exigences de qualité des systèmes / logiciels
 
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
 
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
 
CI-Jenkins.pptx
CI-Jenkins.pptxCI-Jenkins.pptx
CI-Jenkins.pptx
 
Angular Avancé
Angular AvancéAngular Avancé
Angular Avancé
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Intégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciIntégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ci
 

Destaque

Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration ContinueFrédéric Sagez
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielleDavid Buros
 
Intégration Continue (Agile Nantes)
Intégration Continue (Agile Nantes)Intégration Continue (Agile Nantes)
Intégration Continue (Agile Nantes)Fabian Piau
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatiséJérémie Campari
 
Livraison et intégration continue avec TFS 2013 et InRelease
Livraison et intégration continue avec TFS 2013 et InReleaseLivraison et intégration continue avec TFS 2013 et InRelease
Livraison et intégration continue avec TFS 2013 et InReleaseMicrosoft
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tousAurelien Navarre
 
Wilfried woivré intégration continue
Wilfried woivré   intégration continueWilfried woivré   intégration continue
Wilfried woivré intégration continueAymeric Weinbach
 
Azure camp 26 septembre tips and tools
Azure camp 26 septembre tips and toolsAzure camp 26 septembre tips and tools
Azure camp 26 septembre tips and toolsAymeric Weinbach
 
Déploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team ServicesDéploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team ServicesAdrien Siffermann
 
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8Aurelien Navarre
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsRossi Oddet
 
Continuous Delivery Distilled
Continuous Delivery DistilledContinuous Delivery Distilled
Continuous Delivery DistilledMatt Callanan
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryDamien Goldenberg
 
Il était une fois le Continuous Delivery chez Meetic
Il était une fois le Continuous Delivery chez MeeticIl était une fois le Continuous Delivery chez Meetic
Il était une fois le Continuous Delivery chez MeeticJoris Calabrese
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous DeliveryMike McGarr
 
Devoxx 2016 - L'odyssée du continuous delivery
Devoxx 2016 - L'odyssée du continuous deliveryDevoxx 2016 - L'odyssée du continuous delivery
Devoxx 2016 - L'odyssée du continuous deliveryDavid Caramelo
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous DeliveryJez Humble
 

Destaque (20)

Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielle
 
Intégration Continue (Agile Nantes)
Intégration Continue (Agile Nantes)Intégration Continue (Agile Nantes)
Intégration Continue (Agile Nantes)
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatisé
 
Livraison et intégration continue avec TFS 2013 et InRelease
Livraison et intégration continue avec TFS 2013 et InReleaseLivraison et intégration continue avec TFS 2013 et InRelease
Livraison et intégration continue avec TFS 2013 et InRelease
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
 
Wilfried woivré intégration continue
Wilfried woivré   intégration continueWilfried woivré   intégration continue
Wilfried woivré intégration continue
 
Azure camp 26 septembre tips and tools
Azure camp 26 septembre tips and toolsAzure camp 26 septembre tips and tools
Azure camp 26 septembre tips and tools
 
Déploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team ServicesDéploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team Services
 
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec Jenkins
 
Continuous Delivery Distilled
Continuous Delivery DistilledContinuous Delivery Distilled
Continuous Delivery Distilled
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous Delivery
 
Il était une fois le Continuous Delivery chez Meetic
Il était une fois le Continuous Delivery chez MeeticIl était une fois le Continuous Delivery chez Meetic
Il était une fois le Continuous Delivery chez Meetic
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Devoxx 2016 - L'odyssée du continuous delivery
Devoxx 2016 - L'odyssée du continuous deliveryDevoxx 2016 - L'odyssée du continuous delivery
Devoxx 2016 - L'odyssée du continuous delivery
 
DevOps
DevOpsDevOps
DevOps
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
DevOps 101
DevOps 101DevOps 101
DevOps 101
 

Semelhante a Principes de L'intégration Continue

USI Casablanca 2010 - Industrialisation et intégration continue
USI Casablanca 2010 - Industrialisation et intégration continueUSI Casablanca 2010 - Industrialisation et intégration continue
USI Casablanca 2010 - Industrialisation et intégration continueDjamel Zouaoui
 
Friday Web 16 01 2009
Friday Web 16 01 2009Friday Web 16 01 2009
Friday Web 16 01 2009Arnaud_Pukan
 
L’intégration continue chez AXA France
L’intégration continue chez AXA FranceL’intégration continue chez AXA France
L’intégration continue chez AXA FranceMicrosoft
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange LabsEmmanuel Hugonnet
 
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...Microsoft Technet France
 
TechDays 2012 - Windows Azure - ALM
TechDays 2012 - Windows Azure - ALMTechDays 2012 - Windows Azure - ALM
TechDays 2012 - Windows Azure - ALMJason De Oliveira
 
QSOS 2.0 Solutions Linux 2009
QSOS 2.0 Solutions Linux 2009QSOS 2.0 Solutions Linux 2009
QSOS 2.0 Solutions Linux 2009Raphaël Semeteys
 
Mise en oeuvre de lab management avec team foundation server 2010 et microsof...
Mise en oeuvre de lab management avec team foundation server 2010 et microsof...Mise en oeuvre de lab management avec team foundation server 2010 et microsof...
Mise en oeuvre de lab management avec team foundation server 2010 et microsof...Guillaume Brout
 
Documentation - Database Tuning (Oracle)
Documentation - Database Tuning (Oracle)Documentation - Database Tuning (Oracle)
Documentation - Database Tuning (Oracle)BD3C
 
Industrialisation des développements CRM 2011
Industrialisation des développements CRM 2011Industrialisation des développements CRM 2011
Industrialisation des développements CRM 2011Microsoft
 
SharePoint 2010 & Team Foundation Server
SharePoint 2010 & Team Foundation ServerSharePoint 2010 & Team Foundation Server
SharePoint 2010 & Team Foundation ServerPhilippe Sentenac
 
Proposition Commerciale Foundations Fr
Proposition Commerciale Foundations FrProposition Commerciale Foundations Fr
Proposition Commerciale Foundations FrCRONOS Technologies
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Assurance Qualité logicielle
Assurance Qualité logicielleAssurance Qualité logicielle
Assurance Qualité logicielleSylvain Leroy
 
Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsCloudNetCare
 
Documentation - SQL SuperVision (Sybase)
Documentation - SQL SuperVision (Sybase)Documentation - SQL SuperVision (Sybase)
Documentation - SQL SuperVision (Sybase)BD3C
 

Semelhante a Principes de L'intégration Continue (20)

Hudson Aquarium Paris
Hudson Aquarium ParisHudson Aquarium Paris
Hudson Aquarium Paris
 
USI Casablanca 2010 - Industrialisation et intégration continue
USI Casablanca 2010 - Industrialisation et intégration continueUSI Casablanca 2010 - Industrialisation et intégration continue
USI Casablanca 2010 - Industrialisation et intégration continue
 
Friday Web 16 01 2009
Friday Web 16 01 2009Friday Web 16 01 2009
Friday Web 16 01 2009
 
L’intégration continue chez AXA France
L’intégration continue chez AXA FranceL’intégration continue chez AXA France
L’intégration continue chez AXA France
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
 
Methodologie projet
Methodologie projet Methodologie projet
Methodologie projet
 
Dev opsday case study
Dev opsday   case studyDev opsday   case study
Dev opsday case study
 
TechDays 2012 - Windows Azure - ALM
TechDays 2012 - Windows Azure - ALMTechDays 2012 - Windows Azure - ALM
TechDays 2012 - Windows Azure - ALM
 
QSOS 2.0 Solutions Linux 2009
QSOS 2.0 Solutions Linux 2009QSOS 2.0 Solutions Linux 2009
QSOS 2.0 Solutions Linux 2009
 
Mise en oeuvre de lab management avec team foundation server 2010 et microsof...
Mise en oeuvre de lab management avec team foundation server 2010 et microsof...Mise en oeuvre de lab management avec team foundation server 2010 et microsof...
Mise en oeuvre de lab management avec team foundation server 2010 et microsof...
 
Documentation - Database Tuning (Oracle)
Documentation - Database Tuning (Oracle)Documentation - Database Tuning (Oracle)
Documentation - Database Tuning (Oracle)
 
Industrialisation des développements CRM 2011
Industrialisation des développements CRM 2011Industrialisation des développements CRM 2011
Industrialisation des développements CRM 2011
 
SharePoint 2010 & Team Foundation Server
SharePoint 2010 & Team Foundation ServerSharePoint 2010 & Team Foundation Server
SharePoint 2010 & Team Foundation Server
 
Proposition Commerciale Foundations Fr
Proposition Commerciale Foundations FrProposition Commerciale Foundations Fr
Proposition Commerciale Foundations Fr
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Assurance Qualité logicielle
Assurance Qualité logicielleAssurance Qualité logicielle
Assurance Qualité logicielle
 
Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests Logiciels
 
Documentation - SQL SuperVision (Sybase)
Documentation - SQL SuperVision (Sybase)Documentation - SQL SuperVision (Sybase)
Documentation - SQL SuperVision (Sybase)
 

Mais de Xavier Warzee

SOS TITANIC - Be a highly performant team to save your life!
SOS TITANIC - Be a highly performant team to save your life!SOS TITANIC - Be a highly performant team to save your life!
SOS TITANIC - Be a highly performant team to save your life!Xavier Warzee
 
Le Management à l'ère des organisations Agiles
Le Management à l'ère des organisations AgilesLe Management à l'ère des organisations Agiles
Le Management à l'ère des organisations AgilesXavier Warzee
 
Be very efficient and innovative thanks to disorder!
Be very efficient and innovative thanks to disorder!Be very efficient and innovative thanks to disorder!
Be very efficient and innovative thanks to disorder!Xavier Warzee
 
L'Agilité - breakfast IDC devops, 18 septembre 2014
L'Agilité  - breakfast IDC devops, 18 septembre 2014L'Agilité  - breakfast IDC devops, 18 septembre 2014
L'Agilité - breakfast IDC devops, 18 septembre 2014Xavier Warzee
 
Advanced infrastructure for pan european collaborative engineering - E-colleg
Advanced infrastructure for pan european collaborative engineering - E-collegAdvanced infrastructure for pan european collaborative engineering - E-colleg
Advanced infrastructure for pan european collaborative engineering - E-collegXavier Warzee
 
Retour expérience Agilité & Données fonction finances risques - Agile Tour ...
Retour expérience Agilité & Données fonction finances risques - Agile Tour ...Retour expérience Agilité & Données fonction finances risques - Agile Tour ...
Retour expérience Agilité & Données fonction finances risques - Agile Tour ...Xavier Warzee
 
Atelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talents
Atelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talentsAtelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talents
Atelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talentsXavier Warzee
 
Faciliter une transformation agile avec les Innovation Games dans une banque ...
Faciliter une transformation agile avec les Innovation Games dans une banque ...Faciliter une transformation agile avec les Innovation Games dans une banque ...
Faciliter une transformation agile avec les Innovation Games dans une banque ...Xavier Warzee
 
Innovation games + agile in retail banking
Innovation games + agile in retail bankingInnovation games + agile in retail banking
Innovation games + agile in retail bankingXavier Warzee
 
Scrum day 2013 sponsoring package
Scrum day 2013 sponsoring packageScrum day 2013 sponsoring package
Scrum day 2013 sponsoring packageXavier Warzee
 
Annonces du french scrum user group v1.2
Annonces du french scrum user group   v1.2Annonces du french scrum user group   v1.2
Annonces du french scrum user group v1.2Xavier Warzee
 
Annonces du french scrum user group - rencontre du 24 juin 2011
Annonces du french scrum user group - rencontre du 24 juin 2011Annonces du french scrum user group - rencontre du 24 juin 2011
Annonces du french scrum user group - rencontre du 24 juin 2011Xavier Warzee
 
Journées NEPTUNE - Keynote Modélisation chez Microsoft
Journées NEPTUNE - Keynote Modélisation chez MicrosoftJournées NEPTUNE - Keynote Modélisation chez Microsoft
Journées NEPTUNE - Keynote Modélisation chez MicrosoftXavier Warzee
 
Enquête 2011 - Vous, votre organisation et Agile
Enquête 2011 - Vous, votre organisation et Agile Enquête 2011 - Vous, votre organisation et Agile
Enquête 2011 - Vous, votre organisation et Agile Xavier Warzee
 
Scrum Day France 2011 : ouverture avec Xavier Warzee
Scrum Day France 2011 : ouverture avec Xavier WarzeeScrum Day France 2011 : ouverture avec Xavier Warzee
Scrum Day France 2011 : ouverture avec Xavier WarzeeXavier Warzee
 
Embedding a Scrum culture avec Harvey Wheaton, Scrum Alliance
Embedding a Scrum culture avec Harvey Wheaton, Scrum AllianceEmbedding a Scrum culture avec Harvey Wheaton, Scrum Alliance
Embedding a Scrum culture avec Harvey Wheaton, Scrum AllianceXavier Warzee
 
Path to agility, Ken Schwaber
Path to agility, Ken SchwaberPath to agility, Ken Schwaber
Path to agility, Ken SchwaberXavier Warzee
 
Bilan 2010-2011 du FSUG
Bilan 2010-2011 du FSUGBilan 2010-2011 du FSUG
Bilan 2010-2011 du FSUGXavier Warzee
 
Quand mon produit est un système d information
Quand mon produit est un système d informationQuand mon produit est un système d information
Quand mon produit est un système d informationXavier Warzee
 
Un format dynamique de rétrospective, Jean-Charles Meyrignac
Un format dynamique de rétrospective, Jean-Charles Meyrignac Un format dynamique de rétrospective, Jean-Charles Meyrignac
Un format dynamique de rétrospective, Jean-Charles Meyrignac Xavier Warzee
 

Mais de Xavier Warzee (20)

SOS TITANIC - Be a highly performant team to save your life!
SOS TITANIC - Be a highly performant team to save your life!SOS TITANIC - Be a highly performant team to save your life!
SOS TITANIC - Be a highly performant team to save your life!
 
Le Management à l'ère des organisations Agiles
Le Management à l'ère des organisations AgilesLe Management à l'ère des organisations Agiles
Le Management à l'ère des organisations Agiles
 
Be very efficient and innovative thanks to disorder!
Be very efficient and innovative thanks to disorder!Be very efficient and innovative thanks to disorder!
Be very efficient and innovative thanks to disorder!
 
L'Agilité - breakfast IDC devops, 18 septembre 2014
L'Agilité  - breakfast IDC devops, 18 septembre 2014L'Agilité  - breakfast IDC devops, 18 septembre 2014
L'Agilité - breakfast IDC devops, 18 septembre 2014
 
Advanced infrastructure for pan european collaborative engineering - E-colleg
Advanced infrastructure for pan european collaborative engineering - E-collegAdvanced infrastructure for pan european collaborative engineering - E-colleg
Advanced infrastructure for pan european collaborative engineering - E-colleg
 
Retour expérience Agilité & Données fonction finances risques - Agile Tour ...
Retour expérience Agilité & Données fonction finances risques - Agile Tour ...Retour expérience Agilité & Données fonction finances risques - Agile Tour ...
Retour expérience Agilité & Données fonction finances risques - Agile Tour ...
 
Atelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talents
Atelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talentsAtelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talents
Atelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talents
 
Faciliter une transformation agile avec les Innovation Games dans une banque ...
Faciliter une transformation agile avec les Innovation Games dans une banque ...Faciliter une transformation agile avec les Innovation Games dans une banque ...
Faciliter une transformation agile avec les Innovation Games dans une banque ...
 
Innovation games + agile in retail banking
Innovation games + agile in retail bankingInnovation games + agile in retail banking
Innovation games + agile in retail banking
 
Scrum day 2013 sponsoring package
Scrum day 2013 sponsoring packageScrum day 2013 sponsoring package
Scrum day 2013 sponsoring package
 
Annonces du french scrum user group v1.2
Annonces du french scrum user group   v1.2Annonces du french scrum user group   v1.2
Annonces du french scrum user group v1.2
 
Annonces du french scrum user group - rencontre du 24 juin 2011
Annonces du french scrum user group - rencontre du 24 juin 2011Annonces du french scrum user group - rencontre du 24 juin 2011
Annonces du french scrum user group - rencontre du 24 juin 2011
 
Journées NEPTUNE - Keynote Modélisation chez Microsoft
Journées NEPTUNE - Keynote Modélisation chez MicrosoftJournées NEPTUNE - Keynote Modélisation chez Microsoft
Journées NEPTUNE - Keynote Modélisation chez Microsoft
 
Enquête 2011 - Vous, votre organisation et Agile
Enquête 2011 - Vous, votre organisation et Agile Enquête 2011 - Vous, votre organisation et Agile
Enquête 2011 - Vous, votre organisation et Agile
 
Scrum Day France 2011 : ouverture avec Xavier Warzee
Scrum Day France 2011 : ouverture avec Xavier WarzeeScrum Day France 2011 : ouverture avec Xavier Warzee
Scrum Day France 2011 : ouverture avec Xavier Warzee
 
Embedding a Scrum culture avec Harvey Wheaton, Scrum Alliance
Embedding a Scrum culture avec Harvey Wheaton, Scrum AllianceEmbedding a Scrum culture avec Harvey Wheaton, Scrum Alliance
Embedding a Scrum culture avec Harvey Wheaton, Scrum Alliance
 
Path to agility, Ken Schwaber
Path to agility, Ken SchwaberPath to agility, Ken Schwaber
Path to agility, Ken Schwaber
 
Bilan 2010-2011 du FSUG
Bilan 2010-2011 du FSUGBilan 2010-2011 du FSUG
Bilan 2010-2011 du FSUG
 
Quand mon produit est un système d information
Quand mon produit est un système d informationQuand mon produit est un système d information
Quand mon produit est un système d information
 
Un format dynamique de rétrospective, Jean-Charles Meyrignac
Un format dynamique de rétrospective, Jean-Charles Meyrignac Un format dynamique de rétrospective, Jean-Charles Meyrignac
Un format dynamique de rétrospective, Jean-Charles Meyrignac
 

Principes de L'intégration Continue

  • 2. Intégration continue >Agenda Motivations Principes Processus d’intégration continue Focus sur l’inspection du code Conclusion
  • 3. Intégration continue >Agenda Motivations Principes Processus d’intégration continue Focus sur l’inspection du code Conclusion
  • 4. 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, … Besoins : les besoins varient continuellement en fonction • Des produits de concurrents éventuels • Des changements légaux, règlementaires (contraintes d’importation, de confidentialité, etc.) Besoin d’intégrer les évolutions d’un projet en continu
  • 5. Motivations au niveau projet 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
  • 6. Intégration continue >Agenda Motivations Principes Processus d’intégration continue Focus sur l’inspection du code Conclusion
  • 7. 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.
  • 8. Principes Fabriquer (build) un projet à chaque changement • Intégrer les changements en continue !!! « Build » ? • Compiler • Tester (tests unitaires, d’intégration , de performance) • Inspecter (revue de code) • Déployer • Documenter • Notifier (email, SMS, RSS, etc.)
  • 9. Principes 4 6 5 Serveur d’intégration Plateforme de déploiement Check In (changements) 1 1 3 2 Détection des changements (sur les logs) 2 Update de l’espace de travail du serveur d’intégration 3 4 Exéctution du « build » • compilation des sources, • regénération des ressources, • tests, Référentiel de • inspections, Gestion de configuration • déploiements (Clearcase, CVS, SVN, …) Notification des résultats (RSS, Email, Blog, Tray, …) 5 Déploiement de l’application 6
  • 10. 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)
  • 11. Intégration continue >Agenda Motivations Principes Processus d’intégration continue Focus sur l’inspection du code Conclusion
  • 12. 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.
  • 14. 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) • « commit at all time » : à tout moment, les développeurs peuvent mettre à jour le référentiel commun de gestion de configuration (travail en équipe) Référentiel de gestion de configuration («source repository ») • Ensemble des éléments d’un projet (documents, code, …) gérés en configuration • Les développeurs mettent à jour le référentiel avec le code, les tests, les documents • le code doit en principe être compilable • les tests doivent en principe être exécuté avec succès
  • 15. Processus d’intégration continue > Côté serveur d’intégration continue « Automated builds integration plateform » • Construction automatique de l’application régulièrement, par exemple toute les 2 heures • Production de rapports (tests, qualité, activités, …) disponibles en ligne et/ou par exemple envoyés par messagerie Livraison d’une « release » en interne régulièrement • Par exemple toute les 2 semaines • Objectif de cette « release » : faire des tests fonctionnels et/ou de performance (stress) Livraison officielle
  • 16. Processus d’intégration continue > En résumé Automatiser le processus de développement • Extraction périodique et automatique des sources du référentiel • Lancement des tests, calcul de couverture des tests • Calcul d’indicateurs (complexité, etc.) • Construction du logiciel • packaging, déploiement automatisé
  • 17. Intégration continue >Agenda Motivations Principes Processus d’intégration continue Focus sur l’inspection du code Conclusion
  • 18. Focus sur l’inspection du code > Inspection par les tests Accessible à distance (équipe offshore) Plateforme de développement Plateforme Plateforme Plateforme d’acceptation de d’intégration client Station Machine pré-acceptation de travail d’assemblage - Tests d’intégration - Tests fonctionnels - Tests unitaires - Tests Fonctionnels (manuel) - Tests fonctionnels exécutés par l’équipe de (mocks/bouchons) exécutés par le client - Tests fonctionnels par les - Tests Techniques d’intégration (manuel) (manuel) développeurs - Quelques tests /Performance (manuel) d’intégration (Base de données) Automatisation possible des tests fonctionnels avec des outils comme Selenium
  • 19. Focus sur l’inspection du code > Inspection par les tests « 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 ! • Des tests simples ou « smoke tests »* peuvent être lancés permettant de détecter rapidement des disfonctionnements essentiels :  Fichiers de configuration (XML, propriétés, etc.) inconsistants entre eux ne permettant pas de démarrer l’application par exemple  Ressources tierces inaccessibles (base de données, drivers, etc.) • Ces tests doivent solliciter toutes les parties d’une application sans pour autant être exhaustifs • Typiquement, les tests unitaires sont lancés en journée. Un test unitaire ne doit prendre que quelques secondes pour s’exécuter.  Tests avec ou sans bouchon (mocks)  Tests sans bouchon : utiliser des frameworks de tests comme TestNG (suites de tests lancés en fonction d’autres tests exécutés avec succès !) * Article de Steve McConnell, IEEE Software, Vol. 13, No. 4, July 1996
  • 20. Focus sur l’inspection du code > Inspection par les tests « Build » de nuit (nightly build) • Exécuter des tests plus exhaustifs !  100% des tests doivent être exécutés avec succès pour le « build » se termine avec succès !!! • Ces tests permettent par la suite de réduire les risques à l’intégration • Comme il y a moins de changements entre 2 « builds », il est plus simple  de diagnostiquer l’origine d’un problème de compilation  ou de comprendre pourquoi certains tests sont en échec.
  • 21. Focus sur l’inspection du code > Métriques, revue de code 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, … Reste « Quand mesurer » ? • Mesurer quotidiennement (« build » de nuit) • Eviter de créer un effet tunnel !
  • 22. Intégration continue >Agenda Motivations Principes Processus d’intégration continue Focus sur l’inspection du code La solution Cruisecontrol Conclusion
  • 23. La solution CruiseControl CruiseControl est un outil • Permettant la construction automatisée du logiciel. • Indépendant de l’outil de construction  Shell : utilisation possible de make, gmake, clearmake  Ant  Maven • Indépendant du gestionnaire de source Cvs  Subversion  Clearcase  … 
  • 24. La solution CruiseControl • RSS • e-mail Référentiel • Jabber Cruisecontrol 1 3 de source • x10 • web 2 • Compiler • Tester ANT • Inspecter Maven • Déployer Shell • Documenter Détecte les modifications 1 Lance et contrôle la construction 2 Publie les résultats 3
  • 25. 3 développeurs pendant 6 mois = 980 builds ( 8 / jours )
  • 26. La solution CruiseControl > l’écosysteme Extension Firefox Widgets • Widget Apple • Widget Yahoo Windows SysTray • JCCTray, CCTray (.Net)
  • 27. La solution CruiseControl Détection de problème en amont. Détection au checkin. Evite l’intégration traditionnellement faite en fin de projet. Outil de communication « Machine à feedback »
  • 28. Intégration continue >Agenda Motivations Principes Processus d’intégration continue Focus sur l’inspection du code La solution Cruisecontrol Conclusion
  • 29. Conclusion Contrôler la qualité pendant les développement • Tester souvent • Tester les performances souvent • Construire les applications souvent (« build ») Cruisecontrol est une référence • Écosystème signe de reconnaissance et maturité  Apple Widget, Yahoo Widget, CCTray, … • Il existe des solutions opensource plus simple (moins souple ?) :  Bamboo, Continuum, Hudson, etc. • Des solutions commerciales existent :  BuildForge (IBM), OpenMake (Catalyst Systems Corporation), ParaBuild (Viewtier Systems)
  • 30. Conclusion L’intégration continue • Moyen efficace d’éviter le « big-bang » d’une phase d’intégration • « releases » plus robustes et fonctionnellement pertinentes :-) • Capitalisation des bonnes pratiques de fabrication du logiciel • Processus répétable et automatisé de fabrication du logiciel • L’automatisation permet plus de réactivité