Jenkins  Serveur dintégration continuemulti-langage et multi-plateforme                              Grégory BOISSINOT    ...
•  Consultant et formateur Zenika    – En charge du comité technique Intégration Continue    – Intervient chez de nombreux...
•  Pratique de génie logicielle consistant à intégrer le travail des   équipes de développement à travers un processus aut...
•  Transformation dune production humaine (le code   source) en une représentation machine (le binaire)       Fichier     ...
Development   Team       checkin                      checkout                                                            ...
Development                  JAVA     C/C++                                                                              I...
•  Serveur dintégration continue crée par Kohsuke Kawaguchi•  Ecrit en Java et Groovy•  Très simple à configurer à travers...
2006                        2010                                   20082001                                    Jenkins    ...
•  Révolutionne lextensibilité du noyau Jenkins    – Mécanisme de points dextension•  La quasi totalité des plugins sont o...
JAVA       C/C++                                                                             ADA        .NETEnvironment   ...
Problématique dintégration:•  avec votre plateforme•  avec un environnement : SCM, FilleSystem, ...     – Gestion des diff...
•  Notion de machine maître et de n machines esclaves                           bidirectional                            b...
SCMTriggerEnvironment                                                                             FSTrigger               ...
•  e déclenchement du job JOB_B est                                L                               conditionné par la prés...
JOB1   JOB2           JOB3          JOB4                               Polling jobs status for example                    ...
JOB_A        PUSH                                              Environment                                                ...
DOXYGEN_HOME                ANT_HOME                    ..                                                EnvInject       ...
•  Support des projets Java    – Builders      •  nt, Maven, Gant, Gradle, EasyAnt       A   – Outils de tests      •  Uni...
•  Support des projets Ruby    – Builders      • Ruby, Rake   – Outils de métriques      •  uby metrics       R           ...
•  Support des projets PHP    – Builder       •  hing        P   – Outils de tests       •  Unit (PHPUnit)        x   – Ou...
•  Support des projets .NET    – Builders      •  SBuild       M   – Outils de tests      •  Unit(MSTest, NUnit, Gallio)  ...
•  Support des projets ADA    – Builders      •  natmake, Gprbuild       G   – Outils de tests      • xUnit (AUnit)   – Ou...
•  Support des projets C/C++    – Builders      • CMake, SCons   – Outils de tests      •  Unit (CppUnit, BoostTest, UnitT...
OSDC - Jenkins   24
•  Support des projets Python    – Environnement dexécution      A mettre en étape de build      •  irtualenv pour créer u...
C++Test                                                                        DTKIT                         Klocwork     ...
DTKIT                                                                    DTKitValidation                 DTKIT            ...
NOSQL Data StorageGnatcheck output                                                  XSD, XSLAUNIT output  Gnatmetrics outp...
PHPUNIT(PHP) AUNIT (ADA)                   Gallio (.NET)  CppUnit (C)                     BoostTest (C)C++TestUnit (C)    ...
•  Génération et utilisation dun émulateur pour la durée du build•  Se combine parfaitement avec les Matrix Project•  Plus...
•  Plusieurs plugins dintégration                          Plugin vmware              Plugin CloudBees                    ...
•  Gestion des différents protocoles    – File       AritfactDeployer   – SSH       Publish over SSH   – FTP       Publish...
•  Possibilité de développer un plugin Jenkins en langage Ruby•  Début du support en langage Python•  Le support dautres l...
OSDC - Jenkins   34
Upcoming SlideShare
Loading in...5
×

JENKINS_OWF11_OSDC_PARIS20110924

6,243

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
6,243
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
25
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

JENKINS_OWF11_OSDC_PARIS20110924

  1. 1. Jenkins Serveur dintégration continuemulti-langage et multi-plateforme Grégory BOISSINOT (@gboissinot) 24/09/2011 OSDC - Jenkins 1
  2. 2. •  Consultant et formateur Zenika – En charge du comité technique Intégration Continue – Intervient chez de nombreux industriels•  Committer Hudson/Jenkins – Intégration des chaînes de build Java (Gradle), C/C++, ADA – Maintenance corrective et évolutive des plugins réalisés – Développement de plugins transverses (xtrigger, envinject, dry-run, ...)•  Développement de différents composants pour la mise en place de processus dintégration•  Contributeur Gradle OSDC - Jenkins 2
  3. 3. •  Pratique de génie logicielle consistant à intégrer le travail des équipes de développement à travers un processus automatisé pour chaque changement denvironnement: – Ajout ou modification de fichier dans un gestionnaire de configuration logiciel – Ajout ou modification dun fichier de configuration – Ajout ou modification dun fichier dinfrastructure•  Le travail dintégration est constitué de différentes étapes: génération de code, compilation, exécution des tests, inspection de code ...•  La fréquence dintégration réduit un ensemble de risques•  Lobjectif est que lintégration devienne un non événement OSDC - Jenkins 3
  4. 4. •  Transformation dune production humaine (le code source) en une représentation machine (le binaire) Fichier JAR Source Fichier Binaire JVM println "Hello World" A;^A^@^Am^A^@^T()Ljava/lang/Object;^C^ for (int i:[1,2,3]){ @^@^@^@^A^@^KHello World^H^@2^A^@- print i org/codehaus/groovy/runtime/callsite/ } CallSite^G^@4^A^@^KcallCurrent^A^@@ (Lgroovy/lang/GroovyObject; Ljava/lang/Object;)Ljava/lang/Object; ^L^@6^@7^K^@5^@8^C^@^@^@^A^L^@^H^ .... OSDC - Jenkins 4
  5. 5. Development Team checkin checkout Build Serveurs notify set status Othe team notify member OSDC - Jenkins 5
  6. 6. Development JAVA C/C++ INTERNET Event ADA .NET Filesystem Archiva Artifactory NexusEnvironment Jenkins Sonar ClearCase QA tools ... SVN GIT DT Kit ... OSDC - Jenkins 6
  7. 7. •  Serveur dintégration continue crée par Kohsuke Kawaguchi•  Ecrit en Java et Groovy•  Très simple à configurer à travers son interface graphique•  Un vaste écosystème de plugins open source en licence MIT > 300 plugins Modèle de contribution très ouvert•  Conçu initialement pour servir des chaînes dintégration pour des cibles Java, ses plugins lui permettent dadresser des chaînes dintégration de projets C/C++, Python, Ada, Ruby, PHP, ... avec le même niveau dintégration OSDC - Jenkins 7
  8. 8. 2006 2010 20082001 Jenkins Hudson OSDC - Jenkins 8
  9. 9. •  Révolutionne lextensibilité du noyau Jenkins – Mécanisme de points dextension•  La quasi totalité des plugins sont open-source sous licence MIT•  Très peu de barrières pour contribuer•  Le code source est géré principalement sous GitHub – Facilite les contributions à travers des "pull request" OSDC - Jenkins 9
  10. 10. JAVA C/C++ ADA .NETEnvironment Instanciate Processus identifié (traçabilité) et répétable BUILD DEPLOY TEST/ METRICS RELEASE UNIT TEST INSTALL VALIDATION OSDC - Jenkins 10
  11. 11. Problématique dintégration:•  avec votre plateforme•  avec un environnement : SCM, FilleSystem, ... – Gestion des différentes typologies et des outils•  avec les différents outils de build – Mettre en place un environnement de construction•  avec les outils de métriques – Mettre en place un environnement dexécution – Propagation des résultats et visualisation des résultats – Pouvoir gérer les différents outils OSDC - Jenkins 11
  12. 12. •  Notion de machine maître et de n machines esclaves bidirectional byte strem •  grégation des résultats sur la A machine maître OSDC - Jenkins 12
  13. 13. SCMTriggerEnvironment FSTrigger Polling URLTrigger ClearCase IvyTrigger SVN Jenkins MavenTrigger GIT ... BuildResultTrigger ScriptTrigger•  u delà de la simple surveillance dun gestionnaire de version A Plugins•  ermet de couvrir les différentes conditions de déclenchement dun job P OSDC - Jenkins 13
  14. 14. •  e déclenchement du job JOB_B est L conditionné par la présence de nouveaux artefacts dans le filesystem •  OB_B utilise les résultats de JOB_A J POLL JOB_A PUSH"Build & UnitTests" POLL Artifact RUN JOB_B "Functional Tests" RUN OSDC - Jenkins 14
  15. 15. JOB1 JOB2 JOB3 JOB4 Polling jobs status for example "look for new failures" JOB de Clean Launch Clean Procedure OSDC - Jenkins 15
  16. 16. JOB_A PUSH Environment ClearCase Jenkins SVN POLL GIT JOB_B ...•  es dépendances statiques entre les jobs sont supprimées L•  a dépendance entre les jobs est déléguée aux changements de létat dune Lressource externe qui est lentrée de JOB_B•  OB_B ne se déclenche que si JOB_A sest exécuté et à modifié la ressource en Jentrée de JOB_B OSDC - Jenkins 16
  17. 17. DOXYGEN_HOME ANT_HOME .. EnvInject VARA=.. Plugin VARB=.. DOXYGEN_HOME ANT_HOME .. VARA VARB .. Prepare EnvPrepare Env vars from vars from job node OSDC - Jenkins 17
  18. 18. •  Support des projets Java – Builders •  nt, Maven, Gant, Gradle, EasyAnt A – Outils de tests •  Unit, TestNG, Selenium J – Outils de métriques •  iolations (checkstyle, pmd/cpd, findbugs, ...), JavaDocs, V Coverage (Cobertura, Clover, Emma) OSDC - Jenkins 18
  19. 19. •  Support des projets Ruby – Builders • Ruby, Rake – Outils de métriques •  uby metrics R OSDC - Jenkins 19
  20. 20. •  Support des projets PHP – Builder •  hing P – Outils de tests •  Unit (PHPUnit) x – Outils de métriques • Checkstyle (PHP_CodeSniffer) •  lover PHP (PHPUnit) C •  ry (phpcpd) D •  Depend (PHP_Depend) JPlus dinfo: http://jenkins-php.org/ OSDC - Jenkins 20
  21. 21. •  Support des projets .NET – Builders •  SBuild M – Outils de tests •  Unit(MSTest, NUnit, Gallio) x – Outils de métriques •  iolations (stylecop, fxcop, ...) V OSDC - Jenkins 21
  22. 22. •  Support des projets ADA – Builders •  natmake, Gprbuild G – Outils de tests • xUnit (AUnit) – Outils de métriques • Gnatcheck, Gnatmetric OSDC - Jenkins 22
  23. 23. •  Support des projets C/C++ – Builders • CMake, SCons – Outils de tests •  Unit (CppUnit, BoostTest, UnitTest++, ...) x – Outils de métriques •  CCC, Doxygen, Cppcheck, C++Test, Klocwork et DTKit C OSDC - Jenkins 23
  24. 24. OSDC - Jenkins 24
  25. 25. •  Support des projets Python – Environnement dexécution A mettre en étape de build •  irtualenv pour créer un environnement controlé avec un set de v site-package •  ip pour la gestion et linstallation de cet environnement contrôlé p avec le envInject pour la mise en place – Exécution de scripts Python •  ython et Jython P – Outils de métriques •  iolations (Pylint, Clone digger, pep8) V •  loccount S OSDC - Jenkins 25
  26. 26. C++Test DTKIT Klocwork Health projects Metrics Build status Reports GnatCheck Temporal Metrics (XML, TXT, CSV, ...) Test Generic Rule checking Reports Measure … Coverage XML Agregation ADA .NET C/C++ TimelineRule checking … Sonar Rule Rules Extractor OSDC - Jenkins 26
  27. 27. DTKIT DTKitValidation DTKIT Conversion DTKIT REST JUNIT output TUSAR output DTKit Validation External Data libs & tools DTKit Conversion Data DTKIT Jenkins Plugin OSDC - Jenkins 27
  28. 28. NOSQL Data StorageGnatcheck output XSD, XSLAUNIT output Gnatmetrics output DTKIT JUNIT output TUSAR output Reports ReportsC++Test output …Klocwork output … OSDC - Jenkins 28
  29. 29. PHPUNIT(PHP) AUNIT (ADA) Gallio (.NET) CppUnit (C) BoostTest (C)C++TestUnit (C) XUnit … Plugin Xunit Reports (XML, TXT, CSV, …) HUDSON JUnit Reports DTKit (XML) Hudson Recorder (API) OSDC - Jenkins 29
  30. 30. •  Génération et utilisation dun émulateur pour la durée du build•  Se combine parfaitement avec les Matrix Project•  Plus dinformation sur le Jenkins Emulator Plugin https://wiki.jenkins-ci.org/display/JENKINS/Android+Emulator +Plugin OSDC - Jenkins 30
  31. 31. •  Plusieurs plugins dintégration Plugin vmware Plugin CloudBees Deployer sur RUN@Cloud PluginJClouds Plugin Amazon EC2 OSDC - Jenkins 31
  32. 32. •  Gestion des différents protocoles – File AritfactDeployer – SSH Publish over SSH – FTP Publish over FTP – CIFS Publish over CIFS OSDC - Jenkins 32
  33. 33. •  Possibilité de développer un plugin Jenkins en langage Ruby•  Début du support en langage Python•  Le support dautres langages à terme est possible Toutes les contributions sont les bienvenues !! OSDC - Jenkins 33
  34. 34. OSDC - Jenkins 34

×