SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
L’Intégration Continue
  & Agilité…
  " …des outils efficaces. "




   Agile NANTES
          -
        Mars 2010




17/03/2010                     Agile Nantes
Introduction

  Qui sommes nous ?

     Fabian PIAU – fabian.piau@netapsys.fr
         Ingénieur développement chez NETAPSYS
         Diplômé MIAGE Nantes 2009



     Sébastien ROUL – sebastien.roul@netapsys.fr
         Directeur NETAPSYS Atlantique
         15 ans de développement
         Co-fondateur : www.nantes-jug.org




17/03/2010                                    Agile Nantes   2|26
Sommaire


     Problématique

     Agilité et Intégration Continue
        Les concepts
        Fonctionnement général
        Les outils utilisés chez Netapsys


     Retour d’expérience
        Vision Développeur
        Vision Chef de projet


     Conclusion




17/03/2010                               Agile Nantes   3|26
Problématique

  Livrer un logiciel
     De qualité
        Avec le moins de bogues possibles (encore moins des régressions…)
        Complètement testé (idéalement…)
        En assurant une maintenance facile à long terme



     Dans un temps restreint
        Le plus rapidement
        Mise en commun du développement  Plusieurs personnes  Besoin d’intégrer
        Réutiliser des composants existants  Développement modulaire



     Avec un suivi rigoureux
        Transparence pour le client
        Rétroaction




17/03/2010                                      Agile Nantes                         4|26
Outils

  Un outil : L’Agilité
     Des principes
         Accepter le changement et l’accueillir favorablement
         Apprendre à apprendre
         Viser l’excellence technique
         Remettre en cause les pratiques régulièrement

     Des valeurs
         La communication et la transparence
         Le courage et la responsabilité
         La solidarité et l’esprit d’équipe
         L’humilité
         La rétroaction
         La simplicité


17/03/2010                                Agile Nantes           5|26
Outils

  Un autre outil : l’intégration Continue (IC)
    Une méthode agile 
    Principe: plus l’intégration est fréquente, moins elle est longue


        Sans IC




        Avec IC




17/03/2010                            Agile Nantes                       6|26
Intégration Continue

Fonctionnement
général




                          Tout changement du code d’un logiciel est
                          immédiatement pris en compte par une
                          construction automatique d’intégration


17/03/2010              Agile Nantes                                  7|26
Intégration Continue

  Construire des builds tous les jours…

              Chargement de la dernière version du projet depuis le gestionnaire de
               version

              Compilation

              Exécution des tests unitaires

              Inspection du code (en vue de générer les métriques de qualité)
               Génération de la documentation, des rapports, des notes de release
               (par exemple la Javadoc, rapport Checkstyle)

              Construction de la release

              Déploiement de l’application sur l'environnement d’intégration

              Exécution des tests d'intégration


17/03/2010                                  Agile Nantes                          8|26
Intégration Continue

  …Mais des builds différents!

              Build local / privé
                  J’exécute un build sur ma machine
                       Compilation
                       Tests unitaires


              Build d’intégration
                  Le serveur d’intégration exécute un build
                       Idem build local


              Build de nuit
                  Le serveur exécute un build complet
                       + Tests d’intégration
                       + Documentation, rapports, métriques
                       + Release / Déploiement




17/03/2010                                         Agile Nantes   9|26
Exemples d’outils

  Les outils utilisés
        Un gestionnaire de versions
           SVN

        Gestionnaire de dépendances, building
           Maven

        Tests unitaires
           jUnit, Mockito, Eclemma

        Un serveur d’intégration continue
           Hudson

        Repository manager
           Artifactory

        Outils de qualimétrie
           Sonar

17/03/2010                               Agile Nantes   10|26
Hudson

  Les outils utilisés
         Hudson, la « météo » de l’intégration continue
              Un onglet = un projet
              Différents types de build par projet




17/03/2010                                  Agile Nantes   11|26
Hudson

  Le plugin Chuck…




17/03/2010             Agile Nantes   12|26
Hudson

  Les outils utilisés
         Configuration d’un build
              Scrutage du SVN




17/03/2010                           Agile Nantes   13|26
Hudson

  Les outils utilisés
         Configuration d’un build
              La commande Maven à lancer, les notifications par email, etc.




17/03/2010                                Agile Nantes                         14|26
Maven

  Les outils utilisés
         Build de nuit
              Utilisé pour la génération du Maven site




17/03/2010                                 Agile Nantes   15|26
Sonar

  Les outils utilisés

         Sonar – Suivi qualité




17/03/2010                        Agile Nantes   16|26
Sonar




17/03/2010           Agile Nantes   17|26
Sonar




17/03/2010           Agile Nantes   18|26
IC au quotidien

  Vision Développeur

     Réduction du temps de correction des bogues
        On intègre nos modifications régulièrement
        En cas de build en échec, la portion de code à débugger est faible


     Amélioration du travail collaboratif
        La fin du « Ca marche sur mon poste pourtant ! »
        Confiance entre le développeur et le logiciel
              Le code et le design de l’application répondent aux exigences des standards, le résultat
               du build est un produit complètement fonctionnel et testable


     L’IC encourage des bonnes habitudes de test




17/03/2010                                          Agile Nantes                                      19|26
IC au quotidien

  Vision Développeur

     L’exécution régulière des tests et des outils d’inspection permettent de
      recueillir les informations pour l’évaluation de la complexité, la détection des
      codes potentiellement « malicieux »,…
           Taux de couverture
           Taux de duplication
           Respect des conformités de Checkstyle

           Checkstyle, PMD     Respect des règles de codage et des bonnes pratiques
           CPD, Simian         Contrôle l’absence de copier/coller
           JDepend             Analyse de dépendance et respect des règles
                               d’architecture
           JNCSS               Contrôle de la complexité cyclomatique et de la
                               documentation technique

     Sonar génère une compilation de tous ces rapports en prenant en compte
      la notion d’historique
17/03/2010                                    Agile Nantes                            20|26
IC au quotidien

  Vision Chef de projet

     L’intégration continue permet d’obtenir automatiquement des
      indicateurs d’avancement et d’état qualitatif d’un projet en cours de
      développement

     L’objectif de la construction d’intégration est de produire un logiciel
      exécutable qui peut être déployé et testé fonctionnellement. Une
      démonstration avec le client est toujours possible

     Les outils d’assurance qualité participent au contrôle des risques :
       ► Risque de faible qualité logiciel
       ► Risque de découverte tardive des défauts




17/03/2010                              Agile Nantes                            21|26
IC au quotidien

  Vision Chef de projet

     Sonar, un outil central

       ►   Permet d’avoir une meilleure visibilité du projet. Il participe à la
           rétroaction

       ►   Synthétise les indicateurs d’assurance qualité produits par la
           construction Maven et fournit une vision chronologique de l’évolution du
           logiciel

       ►   Sonar est le tableau de bord de l’état technique et qualitatif de
           l’ensemble des projets de l’entreprise




17/03/2010                                   Agile Nantes                         22|26
Exemple de graphiques




17/03/2010             Agile Nantes   23|26
IC au quotidien

  Vision Chef de projet

     Pilotage / Suivi
       ►     L’intégration continue est devenue un outil fondamental pour le pilotage
             de nos projets : elle nous apporte plus de visibilité

     Qualité / Productivité
       ►     L’intégration continue est un formidable levier d’amélioration de notre
             niveau d’expertise technique : elle est l’un des moteurs de nos gains en
             termes de qualité et de productivité

     Transparence / Rétroaction
       ►     L’intégration continue est un élément différenciant par rapport à nos
             concurrents : elle est révélatrice de notre positionnement stratégique




17/03/2010                                  Agile Nantes                              24|26
La suite

  Au sein de Netapsys
     Intégration continue mis en place depuis deux ans sur l’ensemble
      des projets.

     Tous les nouveaux projets sont systématiquement « mavenisés » et
      mis sous Hudson.

     Une fois mise en place, l’intégration continue n’est pas quelque
      chose de « figée »

     Evolution sur l’intégration continue en 2010 :
        Actuellement: tests unitaires avec JUnit sur les projets
        Mise en place de tests intégration et scénarios métier avec Sélénium



17/03/2010                               Agile Nantes                           25|26
Le mot de la fin


     Pour aller plus loin

          http://martinfowler.com/articles/continuousIntegration.html
          https://hudson.dev.java.net/
          http://sonar.codehaus.org/
          http://maven.apache.org/

        Vous pouvez consulter un dossier sur l’IC sur mon blog technique :
              http://blog.fabianpiau.com/2009/07/17/continuous-integration/


     Vos questions




17/03/2010                                    Agile Nantes                     26|26

Contenu connexe

Tendances

Keynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in ParisKeynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in Paris
Jason De Oliveira
 

Tendances (20)

Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outils
 
DODMTL 2019 - Agile et DevOps chez Croesus
DODMTL 2019 - Agile et DevOps chez CroesusDODMTL 2019 - Agile et DevOps chez Croesus
DODMTL 2019 - Agile et DevOps chez Croesus
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++
 
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueOmnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
 
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
 
Keynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in ParisKeynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in Paris
 
Cas Client Bouygues Telecom - CloudNetCare
Cas Client Bouygues Telecom - CloudNetCareCas Client Bouygues Telecom - CloudNetCare
Cas Client Bouygues Telecom - CloudNetCare
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / Introduction
 
20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?
 
20130523 04 - Grille d'évaluation - Gestion du patrimoine de test
20130523 04 - Grille d'évaluation - Gestion du patrimoine de test20130523 04 - Grille d'évaluation - Gestion du patrimoine de test
20130523 04 - Grille d'évaluation - Gestion du patrimoine de test
 
Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014
 
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
 
The DevOps Wonder @ PHPTour Lyon 2014
The DevOps Wonder @ PHPTour Lyon 2014The DevOps Wonder @ PHPTour Lyon 2014
The DevOps Wonder @ PHPTour Lyon 2014
 
Qu'est ce qu'un logiciel de qualité
Qu'est ce qu'un logiciel de qualitéQu'est ce qu'un logiciel de qualité
Qu'est ce qu'un logiciel de qualité
 
Microsoft Azure dev Ops pour le Cloud... et réciproquement…
Microsoft Azure dev Ops pour le Cloud... et réciproquement…Microsoft Azure dev Ops pour le Cloud... et réciproquement…
Microsoft Azure dev Ops pour le Cloud... et réciproquement…
 
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
 
20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps
 
Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests Logiciels
 

En vedette

Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielle
David Buros
 
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
Aymeric Weinbach
 
Wilfried woivré intégration continue
Wilfried woivré   intégration continueWilfried woivré   intégration continue
Wilfried woivré intégration continue
Aymeric Weinbach
 
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
Hugo Hamon
 

En vedette (20)

Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielle
 
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
 
Wilfried woivré intégration continue
Wilfried woivré   intégration continueWilfried woivré   intégration continue
Wilfried woivré intégration continue
 
Les métriques en ligne et les réseaux / médias sociaux
Les métriques en ligne et les réseaux / médias sociauxLes métriques en ligne et les réseaux / médias sociaux
Les métriques en ligne et les réseaux / médias sociaux
 
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
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
Assurance Qualité S O A
Assurance Qualité  S O AAssurance Qualité  S O A
Assurance Qualité S O A
 
Continuous Delivery Distilled
Continuous Delivery DistilledContinuous Delivery Distilled
Continuous Delivery Distilled
 
Configuration as Code: The Job DSL Plugin
Configuration as Code: The Job DSL PluginConfiguration as Code: The Job DSL Plugin
Configuration as Code: The Job DSL Plugin
 
La mesure, ce n'est pas que pour le devops
La mesure, ce n'est pas que pour le devopsLa mesure, ce n'est pas que pour le devops
La mesure, ce n'est pas que pour le devops
 
So, you want to be a plugin developer?
So, you want to be a plugin developer?So, you want to be a plugin developer?
So, you want to be a plugin developer?
 
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
 
Fonds de Tube emboutis ISO NFA 49185 et Métriques
Fonds de Tube emboutis ISO NFA 49185 et MétriquesFonds de Tube emboutis ISO NFA 49185 et Métriques
Fonds de Tube emboutis ISO NFA 49185 et Métriques
 
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
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
Learn jobDSL for Jenkins
Learn jobDSL for JenkinsLearn jobDSL for Jenkins
Learn jobDSL for 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
 

Similaire à Intégration Continue (Agile Nantes)

Présentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expériencePrésentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expérience
Khanh Maudoux
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation Maven
SOAT
 
AgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFS
Agile Toulouse
 
Enib cours c.a.i. web - séance #6 : autour de la webapp
Enib   cours c.a.i. web - séance #6 : autour de la webappEnib   cours c.a.i. web - séance #6 : autour de la webapp
Enib cours c.a.i. web - séance #6 : autour de la webapp
Horacio Gonzalez
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
ALTER WAY
 
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Publicis Sapient Engineering
 

Similaire à Intégration Continue (Agile Nantes) (20)

Petit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesPetit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
 
Présentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expériencePrésentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expérience
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation Maven
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous Delivery
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011
 
[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers
 
Développement d'un grand projet piloté par les tests (BDD)
Développement d'un grand projet piloté par les tests (BDD)Développement d'un grand projet piloté par les tests (BDD)
Développement d'un grand projet piloté par les tests (BDD)
 
AgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFS
 
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
 
Enib cours c.a.i. web - séance #6 : autour de la webapp
Enib   cours c.a.i. web - séance #6 : autour de la webappEnib   cours c.a.i. web - séance #6 : autour de la webapp
Enib cours c.a.i. web - séance #6 : autour de la webapp
 
Normandy JUG integration Continue
Normandy JUG integration ContinueNormandy JUG integration Continue
Normandy JUG integration Continue
 
8 Rex : Mise en place de DevOps sur Azure
8   Rex : Mise en place de DevOps sur Azure8   Rex : Mise en place de DevOps sur Azure
8 Rex : Mise en place de DevOps sur Azure
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie
 
TFS 2012 : un pas vers l'agilité... en avant ou en arrière ?
TFS 2012 : un pas vers l'agilité... en avant ou en arrière ? TFS 2012 : un pas vers l'agilité... en avant ou en arrière ?
TFS 2012 : un pas vers l'agilité... en avant ou en arrière ?
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & Android
 
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
qualimétrie logiciel -  Entreprise Software Analytic - nov 2015qualimétrie logiciel -  Entreprise Software Analytic - nov 2015
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
 

Intégration Continue (Agile Nantes)

  • 1. L’Intégration Continue & Agilité… " …des outils efficaces. " Agile NANTES - Mars 2010 17/03/2010 Agile Nantes
  • 2. Introduction Qui sommes nous ?  Fabian PIAU – fabian.piau@netapsys.fr  Ingénieur développement chez NETAPSYS  Diplômé MIAGE Nantes 2009  Sébastien ROUL – sebastien.roul@netapsys.fr  Directeur NETAPSYS Atlantique  15 ans de développement  Co-fondateur : www.nantes-jug.org 17/03/2010 Agile Nantes 2|26
  • 3. Sommaire  Problématique  Agilité et Intégration Continue  Les concepts  Fonctionnement général  Les outils utilisés chez Netapsys  Retour d’expérience  Vision Développeur  Vision Chef de projet  Conclusion 17/03/2010 Agile Nantes 3|26
  • 4. Problématique Livrer un logiciel  De qualité  Avec le moins de bogues possibles (encore moins des régressions…)  Complètement testé (idéalement…)  En assurant une maintenance facile à long terme  Dans un temps restreint  Le plus rapidement  Mise en commun du développement  Plusieurs personnes  Besoin d’intégrer  Réutiliser des composants existants  Développement modulaire  Avec un suivi rigoureux  Transparence pour le client  Rétroaction 17/03/2010 Agile Nantes 4|26
  • 5. Outils Un outil : L’Agilité  Des principes  Accepter le changement et l’accueillir favorablement  Apprendre à apprendre  Viser l’excellence technique  Remettre en cause les pratiques régulièrement  Des valeurs  La communication et la transparence  Le courage et la responsabilité  La solidarité et l’esprit d’équipe  L’humilité  La rétroaction  La simplicité 17/03/2010 Agile Nantes 5|26
  • 6. Outils Un autre outil : l’intégration Continue (IC)  Une méthode agile   Principe: plus l’intégration est fréquente, moins elle est longue  Sans IC  Avec IC 17/03/2010 Agile Nantes 6|26
  • 7. Intégration Continue Fonctionnement général Tout changement du code d’un logiciel est immédiatement pris en compte par une construction automatique d’intégration 17/03/2010 Agile Nantes 7|26
  • 8. Intégration Continue Construire des builds tous les jours…  Chargement de la dernière version du projet depuis le gestionnaire de version  Compilation  Exécution des tests unitaires  Inspection du code (en vue de générer les métriques de qualité) Génération de la documentation, des rapports, des notes de release (par exemple la Javadoc, rapport Checkstyle)  Construction de la release  Déploiement de l’application sur l'environnement d’intégration  Exécution des tests d'intégration 17/03/2010 Agile Nantes 8|26
  • 9. Intégration Continue …Mais des builds différents!  Build local / privé  J’exécute un build sur ma machine  Compilation  Tests unitaires  Build d’intégration  Le serveur d’intégration exécute un build  Idem build local  Build de nuit  Le serveur exécute un build complet  + Tests d’intégration  + Documentation, rapports, métriques  + Release / Déploiement 17/03/2010 Agile Nantes 9|26
  • 10. Exemples d’outils Les outils utilisés  Un gestionnaire de versions  SVN  Gestionnaire de dépendances, building  Maven  Tests unitaires  jUnit, Mockito, Eclemma  Un serveur d’intégration continue  Hudson  Repository manager  Artifactory  Outils de qualimétrie  Sonar 17/03/2010 Agile Nantes 10|26
  • 11. Hudson Les outils utilisés  Hudson, la « météo » de l’intégration continue  Un onglet = un projet  Différents types de build par projet 17/03/2010 Agile Nantes 11|26
  • 12. Hudson Le plugin Chuck… 17/03/2010 Agile Nantes 12|26
  • 13. Hudson Les outils utilisés  Configuration d’un build  Scrutage du SVN 17/03/2010 Agile Nantes 13|26
  • 14. Hudson Les outils utilisés  Configuration d’un build  La commande Maven à lancer, les notifications par email, etc. 17/03/2010 Agile Nantes 14|26
  • 15. Maven Les outils utilisés  Build de nuit  Utilisé pour la génération du Maven site 17/03/2010 Agile Nantes 15|26
  • 16. Sonar Les outils utilisés  Sonar – Suivi qualité 17/03/2010 Agile Nantes 16|26
  • 17. Sonar 17/03/2010 Agile Nantes 17|26
  • 18. Sonar 17/03/2010 Agile Nantes 18|26
  • 19. IC au quotidien Vision Développeur  Réduction du temps de correction des bogues  On intègre nos modifications régulièrement  En cas de build en échec, la portion de code à débugger est faible  Amélioration du travail collaboratif  La fin du « Ca marche sur mon poste pourtant ! »  Confiance entre le développeur et le logiciel  Le code et le design de l’application répondent aux exigences des standards, le résultat du build est un produit complètement fonctionnel et testable  L’IC encourage des bonnes habitudes de test 17/03/2010 Agile Nantes 19|26
  • 20. IC au quotidien Vision Développeur  L’exécution régulière des tests et des outils d’inspection permettent de recueillir les informations pour l’évaluation de la complexité, la détection des codes potentiellement « malicieux »,…  Taux de couverture  Taux de duplication  Respect des conformités de Checkstyle Checkstyle, PMD Respect des règles de codage et des bonnes pratiques CPD, Simian Contrôle l’absence de copier/coller JDepend Analyse de dépendance et respect des règles d’architecture JNCSS Contrôle de la complexité cyclomatique et de la documentation technique  Sonar génère une compilation de tous ces rapports en prenant en compte la notion d’historique 17/03/2010 Agile Nantes 20|26
  • 21. IC au quotidien Vision Chef de projet  L’intégration continue permet d’obtenir automatiquement des indicateurs d’avancement et d’état qualitatif d’un projet en cours de développement  L’objectif de la construction d’intégration est de produire un logiciel exécutable qui peut être déployé et testé fonctionnellement. Une démonstration avec le client est toujours possible  Les outils d’assurance qualité participent au contrôle des risques : ► Risque de faible qualité logiciel ► Risque de découverte tardive des défauts 17/03/2010 Agile Nantes 21|26
  • 22. IC au quotidien Vision Chef de projet  Sonar, un outil central ► Permet d’avoir une meilleure visibilité du projet. Il participe à la rétroaction ► Synthétise les indicateurs d’assurance qualité produits par la construction Maven et fournit une vision chronologique de l’évolution du logiciel ► Sonar est le tableau de bord de l’état technique et qualitatif de l’ensemble des projets de l’entreprise 17/03/2010 Agile Nantes 22|26
  • 23. Exemple de graphiques 17/03/2010 Agile Nantes 23|26
  • 24. IC au quotidien Vision Chef de projet  Pilotage / Suivi ► L’intégration continue est devenue un outil fondamental pour le pilotage de nos projets : elle nous apporte plus de visibilité  Qualité / Productivité ► L’intégration continue est un formidable levier d’amélioration de notre niveau d’expertise technique : elle est l’un des moteurs de nos gains en termes de qualité et de productivité  Transparence / Rétroaction ► L’intégration continue est un élément différenciant par rapport à nos concurrents : elle est révélatrice de notre positionnement stratégique 17/03/2010 Agile Nantes 24|26
  • 25. La suite Au sein de Netapsys  Intégration continue mis en place depuis deux ans sur l’ensemble des projets.  Tous les nouveaux projets sont systématiquement « mavenisés » et mis sous Hudson.  Une fois mise en place, l’intégration continue n’est pas quelque chose de « figée »  Evolution sur l’intégration continue en 2010 :  Actuellement: tests unitaires avec JUnit sur les projets  Mise en place de tests intégration et scénarios métier avec Sélénium 17/03/2010 Agile Nantes 25|26
  • 26. Le mot de la fin  Pour aller plus loin  http://martinfowler.com/articles/continuousIntegration.html  https://hudson.dev.java.net/  http://sonar.codehaus.org/  http://maven.apache.org/  Vous pouvez consulter un dossier sur l’IC sur mon blog technique :  http://blog.fabianpiau.com/2009/07/17/continuous-integration/  Vos questions 17/03/2010 Agile Nantes 26|26