SlideShare une entreprise Scribd logo
1  sur  41
Allez plus loin dans l'intégration
     continue avec Jenkins

       Guillaume Darmont (Zenika)
   What’s Next Replay Lyon le 10/11/2011
                      -
      D’après Kohsuke Kawaguchi
           (Jenkins / CloudBees)
Zenika en quelques mots

Un cabinet de conseil et de réalisation
Un organisme de formation agréé
Expert en Open Source et méthodes Agiles
Spécialisé dans les technologies Java EE
Créé en 2006 par 4 associés

                   Expertise technique
               Partage des connaissances

             Notre site web : www.zenika.com
       Notre blog technique : http://blog.zenika.com
Nos formations : http://www.zenika.com/catalogue-formation
           Nous suivre sur Twitter : @ZenikaIT               2
Nos implantations



                    Paris
                    Lyon
                    Rennes
                    Nantes




                    Et aussi ...


                    Londres
                    Athènes



                                   3
Zenika Paris




         Nous suivre sur Twitter : @ZenikaIT

                                               4
Zenika Lyon




        Nous suivre sur Twitter : @ZenikaLyon

                                                5
Zenika Rennes & Nantes




       Nous suivre sur Twitter : @ZenikaOuest

                                                6
Auteur de la présentation


• Kohsuke Kawaguchi
  • Créateur / Project lead Jenkins
  • Architecte @ CloudBees
  • Mais aussi :
     – RELAX
     – JAXB, JAX-WS, JAXP, etc.@ Sun
     – Une partie de GlassFish V3
Jenkins-ci.org


•   Serveur d’Intégration Continue Open Source
•   Ecrit en Java
•   Existe depuis 7 ans
•   Facile à installer et utiliser
•   Extensible via 350+ plugins
•   Largement utilisé
    • 11K+ installations
    • 26K+ si on tient compte de l’ancien nom (Hud…)
L’intégration continue ?


• « Intégration » ?
  Différents processus : compilation, exécution des tests,
  opérations sur base de données, packaging, déploiements, etc.
• « Continue » ?
  L’effort d’intégration augmente avec le temps écoulé depuis la
  dernière intégration. La régularité diminue les risques.

• But : Mettre en œuvre un ensemble de moyens pour que les
  processus d’intégration d’un projet deviennent un « non
  événement »
   Avoir un processus rapide et répétable

• Lancement des tâches en mode « Pousse bouton »
Composantes de l’IC


• Eléments composants l'intégration continue :
   • Mécanismes de surveillance du changement (on surveille un
     environnement)
   • Gestionnaire de versions
      – Indispensable même sans intégration continue
   • Ensemble de scripts pour implémenter les processus
     d'intégration
   • Mécanismes de notifications


• L’IC n’est pas un concept récent
• Que peut apporter l’utilisation conjointe de l’IC et des
  dernières technologies ?
What’s Next ?
Intégration Continue, Cloud, VMs
Evolutions des processeurs
Architecture SPARC
Le plein de puissance !


• De plus en plus de puissance de calcul
• De moins en moins cher




• Ratio Performance/Prix de la puissance de calcul meilleur
  que jamais
• Ratio Performance/Prix des personnes évolue peu
•  Utiliser les ordinateurs efficacement est primordial !
Le plein de puissance !


• Puissance de calcul offerte par un parallélisme accru, à
  tous les niveaux :
   • Davantage de thread
   • Davantage de machines virtuelles
   • Davantage de machines physiques


• Problème : Comment gérer cette multitude de machines ?
   • Outils de gestion de parcs : Puppet, Chef, CFEngine
   • Utilisation de Clouds privés (PaaS) : RightScale, etc…
Apport du Cloud et des VMs


• Mise à disposition automatique et en temps réel de
  machines virtuelles
• Permet de changer la donne :
   • Cloner une machine virtuelle « fraîche » à chaque exécution
     des tests
   • Transformer une machine de tests « Quality Assurance » en
     production sans redéployer

• Instantanés (Snapshots) des VMs
   • Lors de tests en échecs
Cloud & SaaS


• SaaS = Software as a Service, hébergé dans le Cloud
   • Sauce OnDemand : Selenium
   • DeviceAnywhere : Tests d’applications mobiles
• Un autre moyen de simplifier et automatiser la mise à
  disposition des éléments nécessaires
• Flexibilité grâce au Just-In-Time
• Tarifs au temps consommé (pour Cloudbees)
          Nb Machines                Nb Machines




                           Temps                     Temps
Toujours plus d’automatisation
Du coté des outils de dév…


• Progrès constants au niveau des outils de développement

• Invocation non-interactive sous Windows
   • Visual Studio  MSBuild

• Outils offrent une sortie pouvant être utilisée par une
  machine
   • CVS  Subversion
   • Tests frameworks

• Demande de plus en plus forte des utilisateurs pour un
  accès batch / CLI à leurs outils
Du coté des navigateurs…


• … la prochaine « grande bataille »
Du coté des navigateurs…


• Quid de Selenium ?
   • Preuve que le besoin est là, mais la solution n’est pas
     optimale


• Idéalement, il faudrait:
   • Pas d’affichage nécessaire
   • Possibilité d’embarquer le navigateur dans le processus, afin
     d’offrir une meilleure délimitation des comportements
   • Plus de proxy
   • Accès direct aux logs consoles du navigateur
   • Injection de comportements / d’erreurs
Automatiser, encore et encore !


• Automatiser à tous les niveaux :
   • Machines, OS, middlewares, outils


• Automatiser grâce :
   • Au Cloud, aux VMs, aux SaaS


• D’innombrables perspectives d’automatisation vous sont
  ouvertes !

• Utilisation des serveurs d’Intégration Continue pour fédérer
  toutes ces briques : Jenkins
Jenkins


• Exécution de builds distribués depuis 5 ans

• Permet de contrôler et gérer plus de 100 machines depuis
  un seul endroit

• Offre un mécanisme de plugin permettant d’étendre
  facilement ses possibilités

• Cette profusion de plugins nous permet d’envisager
  l’Intégration Continue sous un autre angle…
L’intégration continue en tant que
             Fonction
Une Fonction ?


• Penser un build/test comme une fonction
   • Par exemple : F(objet source) = métriques qualité
   • Pas d’effets de bord


• L’évaluation de la fonction peut être coûteuse
   •   Faire de l’asynchrone
   •   L’« objet source » est créé en premier
   •   Calcul des métriques qualité viennent par la suite
   •   Calcul des métriques qualité découpé en plusieurs étapes
Une Fonction ?


• F(objet source) = métriques qualité

• En pratique, on a F(commit) = métriques qualité

• Pourquoi les commits :
   • Déterminent sans ambiguïté une arborescence source
   • Nombreux outils déjà disponibles
   • Copie simple et rapide d’une machine vers une autre
Dilemme des commits SVN


• Imaginez un projet avec de nombreux tests
• Le développeur se concentre sur ce qu’il doit faire
   • Le reste, comme par exemple l’exécution des tests, est
     effectué par le serveur d’Intégration Continue
• Un commit est nécessaire pour l’Intégration Continue
• Mais vous ne voulez pas commiter sans valider via l’IC
• Donc, vous ne pouvez pas créer de commits                   


•  Solution : Utilisation d’un gestionnaire de version
  distribué (Distributed VCS comme Git, Mercurial, etc.)
Distributed VCS


• Permet de séparer la notion de commit de la notion de
  partage

• Comme pour SVN, commit = arborescence source

• Mais possibilité de partager seulement une partie des
  commits (avec SVN, pas de commit non partagé)
   •  Partage sélectif
Partage sélectif


• Aussi appelé Revue de Code
• Vous partagez votre modification avec quelques personnes
• La modification est évaluée
Partage sélectif


•   Aussi appelé Revue de Code
•   Vous partagez votre modification avec quelques personnes
•   La modification est évaluée
•   Puis vous partagez de manière globale cette même
    modification
IC en tant que Revue de Code



 Développement     Jenkins / Gerrit   Central Repo
IC en tant que Revue de Code



 Développement     Jenkins / Gerrit   Central Repo
IC en tant que Revue de Code



 Développement     Jenkins / Gerrit   Central Repo
IC en tant que Revue de Code



 Développement     Jenkins / Gerrit   Central Repo
IC en tant que Revue de Code



 Développement     Jenkins / Gerrit   Central Repo
IC en tant que Revue de Code


• Plusieurs façons d’implémenter ce fonctionnement

• Surveiller les commits locaux

• Envoyer (push) certains commits pour demander à l’IC de
  le tester

• Lors du push sur le repository central, le repo peut
  consulter les résultats du serveur d’IC via le commit ID
   • Rejet des changements non validés
   • Réduction du temps entre le push et l’apparition dans le repo
IC en tant que Revue de Code


• « Liberal branching »
   • Chaque développeur pousse ses commits sur sa branche
   • Jenkins les récupère et les intègre dans le repo central

                                                       Branche Dev1


                                                       Branche Dev2




                                                      Central Repo
Fini les tests en local !


• Laisser travailler les serveurs d’IC
• Ne pas bloquer les développeurs est primordial
• Mieux vaut attendre pour avoir les résultats via l’IC, plutôt
  que les lancer en local



•  Plusieurs réponses possibles
   • Dépend des équipes, des workflows mis en œuvre
   • Mais quelque soit l’implémentation choisie, l’Intégration
     Continue en tant que Fonction est toujours là
Conclusion


• De plus en plus de puissance de calcul à disposition
   • De plus en plus de parallélisme à exploiter
   • Impacte l’ingénierie logicielle : comment bénéficier du
     parallélisme ?

• De nombreuses tendances poussent à l’automatisation :
   • Cloud, VM, DVCS, outils développeurs avec batch mode, …


• Laisser les ordinateurs faire le travail répétitif
• Laisser les décisions aux personnes
• « Auparavant, l’intégration continue était la noisette dans le
  chocolat, maintenant c’est le chocolat  »
Questions ?

Contenu connexe

Tendances

Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016
Ippon
 

Tendances (20)

Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
 
Java Fx Rapport
Java Fx RapportJava Fx Rapport
Java Fx Rapport
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Native script
Native scriptNative script
Native script
 
Booster votre application Windows Phone 8
Booster votre application Windows Phone 8Booster votre application Windows Phone 8
Booster votre application Windows Phone 8
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open Source
 
Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016
 
L’environnement du développement mobile iOS & Android
L’environnement du développement mobile iOS & AndroidL’environnement du développement mobile iOS & Android
L’environnement du développement mobile iOS & Android
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / Jenkins
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
 
Java Fx
Java FxJava Fx
Java Fx
 
REX react native
REX react nativeREX react native
REX react native
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagner
 
Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11
 
CocoaHeads Rennes #14: Programmation Responsive par Celedev
CocoaHeads Rennes #14: Programmation Responsive par CeledevCocoaHeads Rennes #14: Programmation Responsive par Celedev
CocoaHeads Rennes #14: Programmation Responsive par Celedev
 
JavaFx overview
JavaFx overviewJavaFx overview
JavaFx overview
 

En vedette

Noah en jonas
Noah en jonasNoah en jonas
Noah en jonas
rcmuziek8
 

En vedette (20)

Conférence Open Data par où commencer ? Intervention H.Rannou Items
Conférence Open Data par où commencer ? Intervention H.Rannou Items Conférence Open Data par où commencer ? Intervention H.Rannou Items
Conférence Open Data par où commencer ? Intervention H.Rannou Items
 
Le gérondif et le participe présent
Le gérondif et le participe  présentLe gérondif et le participe  présent
Le gérondif et le participe présent
 
Componentes electronicos
Componentes electronicosComponentes electronicos
Componentes electronicos
 
Présentation veille info
Présentation veille infoPrésentation veille info
Présentation veille info
 
Campana Teka DBB 90
Campana Teka DBB 90Campana Teka DBB 90
Campana Teka DBB 90
 
lavavajillas Teka DW8 80 F
lavavajillas Teka DW8 80 Flavavajillas Teka DW8 80 F
lavavajillas Teka DW8 80 F
 
Resultado 2
Resultado 2Resultado 2
Resultado 2
 
Trabajo colaborativo
Trabajo colaborativoTrabajo colaborativo
Trabajo colaborativo
 
Nevera Smeg FAB5LUJ
Nevera Smeg FAB5LUJNevera Smeg FAB5LUJ
Nevera Smeg FAB5LUJ
 
Decret loi 116 du 2 Novembre 2011 sur les medias - Tunisie
Decret loi 116 du 2 Novembre 2011 sur les medias - TunisieDecret loi 116 du 2 Novembre 2011 sur les medias - Tunisie
Decret loi 116 du 2 Novembre 2011 sur les medias - Tunisie
 
Noah en jonas
Noah en jonasNoah en jonas
Noah en jonas
 
Creche3
Creche3Creche3
Creche3
 
Écho des rongeurs
Écho des rongeursÉcho des rongeurs
Écho des rongeurs
 
Lavadora Siemens WK12D321EE
Lavadora Siemens WK12D321EELavadora Siemens WK12D321EE
Lavadora Siemens WK12D321EE
 
Campana Siemens LC98BA572
Campana Siemens LC98BA572 Campana Siemens LC98BA572
Campana Siemens LC98BA572
 
Historia de los Mundiales
Historia de los MundialesHistoria de los Mundiales
Historia de los Mundiales
 
Hervidor smeg KLF01BLEU
Hervidor smeg KLF01BLEUHervidor smeg KLF01BLEU
Hervidor smeg KLF01BLEU
 
Campana Siemens LB89585
Campana Siemens LB89585Campana Siemens LB89585
Campana Siemens LB89585
 
Nevera Smeg FA35PX3
Nevera Smeg FA35PX3Nevera Smeg FA35PX3
Nevera Smeg FA35PX3
 
Manual bosch encimera cristal ppc616 b21e
Manual bosch   encimera cristal ppc616 b21eManual bosch   encimera cristal ppc616 b21e
Manual bosch encimera cristal ppc616 b21e
 

Similaire à What’s Next Replay! Lyon 2011 - G. Darmont

[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
Christophe HERAL
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
ENSIBS
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
boulonvert
 

Similaire à What’s Next Replay! Lyon 2011 - G. Darmont (20)

Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Introduction DevOps & containarization des applications
Introduction DevOps & containarization des applicationsIntroduction DevOps & containarization des applications
Introduction DevOps & containarization des applications
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
Happy dev ... & ops
Happy dev ... & opsHappy dev ... & ops
Happy dev ... & ops
 
Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)
 
[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
 
Afterworks @Nouméa - DevOps, approche par container et Docker
Afterworks @Nouméa - DevOps, approche par container et DockerAfterworks @Nouméa - DevOps, approche par container et Docker
Afterworks @Nouméa - DevOps, approche par container et Docker
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
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
 
Accéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetAccéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.Net
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
SUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSPSUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSP
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds Java
 
Symposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec MicrosoftSymposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec Microsoft
 
Xebicon architectures microservices azure v1.0
Xebicon   architectures microservices azure v1.0Xebicon   architectures microservices azure v1.0
Xebicon architectures microservices azure v1.0
 
XebiCon'16 : Architecture MicroServices avec Azure par Michel Hubert, CTO de ...
XebiCon'16 : Architecture MicroServices avec Azure par Michel Hubert, CTO de ...XebiCon'16 : Architecture MicroServices avec Azure par Michel Hubert, CTO de ...
XebiCon'16 : Architecture MicroServices avec Azure par Michel Hubert, CTO de ...
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous Delivery
 

Plus de Zenika

Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud VillenaveAgile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
Zenika
 

Plus de Zenika (20)

Datascience & IoT
Datascience & IoTDatascience & IoT
Datascience & IoT
 
Matinale Agile Wake Up #4 : les tests et l'agilité
Matinale Agile Wake Up #4 : les tests et l'agilitéMatinale Agile Wake Up #4 : les tests et l'agilité
Matinale Agile Wake Up #4 : les tests et l'agilité
 
Agile Wake Up #3 : Lean UX
Agile Wake Up #3 : Lean UXAgile Wake Up #3 : Lean UX
Agile Wake Up #3 : Lean UX
 
Agile Wake Up #3 : La transformation Agile de Kisio Digital
Agile Wake Up #3 : La transformation Agile de Kisio DigitalAgile Wake Up #3 : La transformation Agile de Kisio Digital
Agile Wake Up #3 : La transformation Agile de Kisio Digital
 
Agile Wake Up #3 : la contractualisation Agile
Agile Wake Up #3 : la contractualisation AgileAgile Wake Up #3 : la contractualisation Agile
Agile Wake Up #3 : la contractualisation Agile
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_ml
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
 
Motivation 3.0 : sens, autonomie et maîtrise.
Motivation 3.0 : sens, autonomie et maîtrise.Motivation 3.0 : sens, autonomie et maîtrise.
Motivation 3.0 : sens, autonomie et maîtrise.
 
Matinale React
Matinale ReactMatinale React
Matinale React
 
NigthClazz Spark - Machine Learning / Introduction à Spark et Zeppelin
NigthClazz Spark - Machine Learning / Introduction à Spark et ZeppelinNigthClazz Spark - Machine Learning / Introduction à Spark et Zeppelin
NigthClazz Spark - Machine Learning / Introduction à Spark et Zeppelin
 
NightClazz Spark / Machine Learning
NightClazz Spark / Machine LearningNightClazz Spark / Machine Learning
NightClazz Spark / Machine Learning
 
HTTP2 : ce qui va changer par Julien Landuré
HTTP2 : ce qui va changer par Julien LanduréHTTP2 : ce qui va changer par Julien Landuré
HTTP2 : ce qui va changer par Julien Landuré
 
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...
 
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud VillenaveAgile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
 
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelleAgile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
 
Entreprise libérée : Du mythe à la réalité ?
Entreprise libérée : Du mythe à la réalité ?Entreprise libérée : Du mythe à la réalité ?
Entreprise libérée : Du mythe à la réalité ?
 
Conference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partieConference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partie
 
NightClazz Docker Découverte
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte
 
Matinale DevOps / Docker
Matinale DevOps / DockerMatinale DevOps / Docker
Matinale DevOps / Docker
 
NightClazz Java 8 Decouverte
NightClazz Java 8 DecouverteNightClazz Java 8 Decouverte
NightClazz Java 8 Decouverte
 

What’s Next Replay! Lyon 2011 - G. Darmont

  • 1. Allez plus loin dans l'intégration continue avec Jenkins Guillaume Darmont (Zenika) What’s Next Replay Lyon le 10/11/2011 - D’après Kohsuke Kawaguchi (Jenkins / CloudBees)
  • 2. Zenika en quelques mots Un cabinet de conseil et de réalisation Un organisme de formation agréé Expert en Open Source et méthodes Agiles Spécialisé dans les technologies Java EE Créé en 2006 par 4 associés  Expertise technique  Partage des connaissances Notre site web : www.zenika.com Notre blog technique : http://blog.zenika.com Nos formations : http://www.zenika.com/catalogue-formation Nous suivre sur Twitter : @ZenikaIT 2
  • 3. Nos implantations Paris Lyon Rennes Nantes Et aussi ... Londres Athènes 3
  • 4. Zenika Paris Nous suivre sur Twitter : @ZenikaIT 4
  • 5. Zenika Lyon Nous suivre sur Twitter : @ZenikaLyon 5
  • 6. Zenika Rennes & Nantes Nous suivre sur Twitter : @ZenikaOuest 6
  • 7. Auteur de la présentation • Kohsuke Kawaguchi • Créateur / Project lead Jenkins • Architecte @ CloudBees • Mais aussi : – RELAX – JAXB, JAX-WS, JAXP, etc.@ Sun – Une partie de GlassFish V3
  • 8. Jenkins-ci.org • Serveur d’Intégration Continue Open Source • Ecrit en Java • Existe depuis 7 ans • Facile à installer et utiliser • Extensible via 350+ plugins • Largement utilisé • 11K+ installations • 26K+ si on tient compte de l’ancien nom (Hud…)
  • 9. L’intégration continue ? • « Intégration » ? Différents processus : compilation, exécution des tests, opérations sur base de données, packaging, déploiements, etc. • « Continue » ? L’effort d’intégration augmente avec le temps écoulé depuis la dernière intégration. La régularité diminue les risques. • But : Mettre en œuvre un ensemble de moyens pour que les processus d’intégration d’un projet deviennent un « non événement »  Avoir un processus rapide et répétable • Lancement des tâches en mode « Pousse bouton »
  • 10. Composantes de l’IC • Eléments composants l'intégration continue : • Mécanismes de surveillance du changement (on surveille un environnement) • Gestionnaire de versions – Indispensable même sans intégration continue • Ensemble de scripts pour implémenter les processus d'intégration • Mécanismes de notifications • L’IC n’est pas un concept récent • Que peut apporter l’utilisation conjointe de l’IC et des dernières technologies ?
  • 15. Le plein de puissance ! • De plus en plus de puissance de calcul • De moins en moins cher • Ratio Performance/Prix de la puissance de calcul meilleur que jamais • Ratio Performance/Prix des personnes évolue peu •  Utiliser les ordinateurs efficacement est primordial !
  • 16. Le plein de puissance ! • Puissance de calcul offerte par un parallélisme accru, à tous les niveaux : • Davantage de thread • Davantage de machines virtuelles • Davantage de machines physiques • Problème : Comment gérer cette multitude de machines ? • Outils de gestion de parcs : Puppet, Chef, CFEngine • Utilisation de Clouds privés (PaaS) : RightScale, etc…
  • 17. Apport du Cloud et des VMs • Mise à disposition automatique et en temps réel de machines virtuelles • Permet de changer la donne : • Cloner une machine virtuelle « fraîche » à chaque exécution des tests • Transformer une machine de tests « Quality Assurance » en production sans redéployer • Instantanés (Snapshots) des VMs • Lors de tests en échecs
  • 18. Cloud & SaaS • SaaS = Software as a Service, hébergé dans le Cloud • Sauce OnDemand : Selenium • DeviceAnywhere : Tests d’applications mobiles • Un autre moyen de simplifier et automatiser la mise à disposition des éléments nécessaires • Flexibilité grâce au Just-In-Time • Tarifs au temps consommé (pour Cloudbees) Nb Machines Nb Machines Temps Temps
  • 20. Du coté des outils de dév… • Progrès constants au niveau des outils de développement • Invocation non-interactive sous Windows • Visual Studio  MSBuild • Outils offrent une sortie pouvant être utilisée par une machine • CVS  Subversion • Tests frameworks • Demande de plus en plus forte des utilisateurs pour un accès batch / CLI à leurs outils
  • 21. Du coté des navigateurs… • … la prochaine « grande bataille »
  • 22. Du coté des navigateurs… • Quid de Selenium ? • Preuve que le besoin est là, mais la solution n’est pas optimale • Idéalement, il faudrait: • Pas d’affichage nécessaire • Possibilité d’embarquer le navigateur dans le processus, afin d’offrir une meilleure délimitation des comportements • Plus de proxy • Accès direct aux logs consoles du navigateur • Injection de comportements / d’erreurs
  • 23. Automatiser, encore et encore ! • Automatiser à tous les niveaux : • Machines, OS, middlewares, outils • Automatiser grâce : • Au Cloud, aux VMs, aux SaaS • D’innombrables perspectives d’automatisation vous sont ouvertes ! • Utilisation des serveurs d’Intégration Continue pour fédérer toutes ces briques : Jenkins
  • 24. Jenkins • Exécution de builds distribués depuis 5 ans • Permet de contrôler et gérer plus de 100 machines depuis un seul endroit • Offre un mécanisme de plugin permettant d’étendre facilement ses possibilités • Cette profusion de plugins nous permet d’envisager l’Intégration Continue sous un autre angle…
  • 25. L’intégration continue en tant que Fonction
  • 26. Une Fonction ? • Penser un build/test comme une fonction • Par exemple : F(objet source) = métriques qualité • Pas d’effets de bord • L’évaluation de la fonction peut être coûteuse • Faire de l’asynchrone • L’« objet source » est créé en premier • Calcul des métriques qualité viennent par la suite • Calcul des métriques qualité découpé en plusieurs étapes
  • 27. Une Fonction ? • F(objet source) = métriques qualité • En pratique, on a F(commit) = métriques qualité • Pourquoi les commits : • Déterminent sans ambiguïté une arborescence source • Nombreux outils déjà disponibles • Copie simple et rapide d’une machine vers une autre
  • 28. Dilemme des commits SVN • Imaginez un projet avec de nombreux tests • Le développeur se concentre sur ce qu’il doit faire • Le reste, comme par exemple l’exécution des tests, est effectué par le serveur d’Intégration Continue • Un commit est nécessaire pour l’Intégration Continue • Mais vous ne voulez pas commiter sans valider via l’IC • Donc, vous ne pouvez pas créer de commits  •  Solution : Utilisation d’un gestionnaire de version distribué (Distributed VCS comme Git, Mercurial, etc.)
  • 29. Distributed VCS • Permet de séparer la notion de commit de la notion de partage • Comme pour SVN, commit = arborescence source • Mais possibilité de partager seulement une partie des commits (avec SVN, pas de commit non partagé) •  Partage sélectif
  • 30. Partage sélectif • Aussi appelé Revue de Code • Vous partagez votre modification avec quelques personnes • La modification est évaluée
  • 31. Partage sélectif • Aussi appelé Revue de Code • Vous partagez votre modification avec quelques personnes • La modification est évaluée • Puis vous partagez de manière globale cette même modification
  • 32. IC en tant que Revue de Code Développement Jenkins / Gerrit Central Repo
  • 33. IC en tant que Revue de Code Développement Jenkins / Gerrit Central Repo
  • 34. IC en tant que Revue de Code Développement Jenkins / Gerrit Central Repo
  • 35. IC en tant que Revue de Code Développement Jenkins / Gerrit Central Repo
  • 36. IC en tant que Revue de Code Développement Jenkins / Gerrit Central Repo
  • 37. IC en tant que Revue de Code • Plusieurs façons d’implémenter ce fonctionnement • Surveiller les commits locaux • Envoyer (push) certains commits pour demander à l’IC de le tester • Lors du push sur le repository central, le repo peut consulter les résultats du serveur d’IC via le commit ID • Rejet des changements non validés • Réduction du temps entre le push et l’apparition dans le repo
  • 38. IC en tant que Revue de Code • « Liberal branching » • Chaque développeur pousse ses commits sur sa branche • Jenkins les récupère et les intègre dans le repo central Branche Dev1 Branche Dev2 Central Repo
  • 39. Fini les tests en local ! • Laisser travailler les serveurs d’IC • Ne pas bloquer les développeurs est primordial • Mieux vaut attendre pour avoir les résultats via l’IC, plutôt que les lancer en local •  Plusieurs réponses possibles • Dépend des équipes, des workflows mis en œuvre • Mais quelque soit l’implémentation choisie, l’Intégration Continue en tant que Fonction est toujours là
  • 40. Conclusion • De plus en plus de puissance de calcul à disposition • De plus en plus de parallélisme à exploiter • Impacte l’ingénierie logicielle : comment bénéficier du parallélisme ? • De nombreuses tendances poussent à l’automatisation : • Cloud, VM, DVCS, outils développeurs avec batch mode, … • Laisser les ordinateurs faire le travail répétitif • Laisser les décisions aux personnes • « Auparavant, l’intégration continue était la noisette dans le chocolat, maintenant c’est le chocolat  »