Publicité
Publicité

Contenu connexe

Publicité
Publicité

JENKINS_OWF11_OSDC_PARIS20110924

  1. Jenkins Serveur d'intégration continue multi-langage et multi-plateforme Grégory BOISSINOT (@gboissinot) 24/09/2011 OSDC - Jenkins 1
  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 d'intégration •  Contributeur Gradle OSDC - Jenkins 2
  3. •  Pratique de génie logicielle consistant à intégrer le travail des équipes de développement à travers un processus automatisé pour chaque changement d'environnement: – Ajout ou modification de fichier dans un gestionnaire de configuration logiciel – Ajout ou modification d'un fichier de configuration – Ajout ou modification d'un fichier d'infrastructure •  Le travail d'intégration est constitué de différentes étapes: génération de code, compilation, exécution des tests, inspection de code ... •  La fréquence d'intégration réduit un ensemble de risques •  L'objectif est que l'intégration devienne un non événement OSDC - Jenkins 3
  4. •  Transformation d'une 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. Development Team checkin checkout Build Serveurs notify set status Othe team notify member OSDC - Jenkins 5
  6. Development JAVA C/C++ INTERNET Event ADA .NET Filesystem Archiva Artifactory Nexus Environment Jenkins Sonar ClearCase QA tools ... SVN GIT DT Kit ... OSDC - Jenkins 6
  7. •  Serveur d'inté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 d'intégration pour des cibles Java, ses plugins lui permettent d'adresser des chaînes d'intégration de projets C/C++, Python, Ada, Ruby, PHP, ... avec le même niveau d'intégration OSDC - Jenkins 7
  8. 2006 2010 2008 2001 Jenkins Hudson OSDC - Jenkins 8
  9. •  Révolutionne l'extensibilité du noyau Jenkins – Mécanisme de points d'extension •  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. JAVA C/C++ ADA .NET Environment Instanciate Processus identifié (traçabilité) et répétable BUILD DEPLOY TEST/ METRICS RELEASE UNIT TEST INSTALL VALIDATION OSDC - Jenkins 10
  11. Problématique d'inté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 d'exécution – Propagation des résultats et visualisation des résultats – Pouvoir gérer les différents outils OSDC - Jenkins 11
  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. SCMTrigger Environment FSTrigger Polling URLTrigger ClearCase IvyTrigger SVN Jenkins MavenTrigger GIT ... BuildResultTrigger ScriptTrigger •  u delà de la simple surveillance d'un gestionnaire de version A Plugins •  ermet de couvrir les différentes conditions de déclenchement d'un job P OSDC - Jenkins 13
  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. JOB1 JOB2 JOB3 JOB4 Polling jobs status for example "look for new failures" JOB de Clean Launch Clean Procedure OSDC - Jenkins 15
  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 d'une L ressource externe qui est l'entrée de JOB_B •  OB_B ne se déclenche que si JOB_A s'est exécuté et à modifié la ressource en J entrée de JOB_B OSDC - Jenkins 16
  17. DOXYGEN_HOME ANT_HOME .. EnvInject VARA=.. Plugin VARB=.. DOXYGEN_HOME ANT_HOME .. VARA VARB .. Prepare Env Prepare Env vars from vars from job node OSDC - Jenkins 17
  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. •  Support des projets Ruby – Builders • Ruby, Rake – Outils de métriques •  uby metrics R OSDC - Jenkins 19
  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) J Plus d'info: http://jenkins-php.org/ OSDC - Jenkins 20
  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. •  Support des projets ADA – Builders •  natmake, Gprbuild G – Outils de tests • xUnit (AUnit) – Outils de métriques • Gnatcheck, Gnatmetric OSDC - Jenkins 22
  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. OSDC - Jenkins 24
  25. •  Support des projets Python – Environnement d'exé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 l'installation 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. 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++ Timeline Rule checking … Sonar Rule Rules Extractor OSDC - Jenkins 26
  27. DTKIT DTKit Validation DTKIT Conversion DTKIT REST JUNIT output TUSAR output DTKit Validation External Data libs & tools DTKit Conversion Data DTKIT Jenkins Plugin OSDC - Jenkins 27
  28. NOSQL Data Storage Gnatcheck output XSD, XSL AUNIT output Gnatmetrics output DTKIT JUNIT output TUSAR output Reports Reports C++Test output … Klocwork output … OSDC - Jenkins 28
  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. •  Génération et utilisation d'un émulateur pour la durée du build •  Se combine parfaitement avec les Matrix Project •  Plus d'information sur le Jenkins Emulator Plugin https://wiki.jenkins-ci.org/display/JENKINS/Android+Emulator +Plugin OSDC - Jenkins 30
  31. •  Plusieurs plugins d'intégration Plugin vmware Plugin CloudBees Deployer sur RUN@Cloud PluginJClouds Plugin Amazon EC2 OSDC - Jenkins 31
  32. •  Gestion des différents protocoles – File AritfactDeployer – SSH Publish over SSH – FTP Publish over FTP – CIFS Publish over CIFS OSDC - Jenkins 32
  33. •  Possibilité de développer un plugin Jenkins en langage Ruby •  Début du support en langage Python •  Le support d'autres langages à terme est possible Toutes les contributions sont les bienvenues !! OSDC - Jenkins 33
  34. OSDC - Jenkins 34
Publicité