SlideShare une entreprise Scribd logo
1  sur  34
Jenkins
  Serveur d'intégration continue
multi-langage et multi-plateforme


                              Grégory BOISSINOT
                                   (@gboissinot)
                                    24/09/2011


             OSDC - Jenkins                        1
•  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
•  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
•  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
Development
   Team       checkin                      checkout


                                                                 Build
                                                               Serveurs


                         notify
                                                  set status




 Othe team      notify
  member




                          OSDC - Jenkins                                  5
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
•  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
2006                        2010

                                   2008

2001




                                    Jenkins




         Hudson

                  OSDC - Jenkins              8
•  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
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
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
•  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
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
•  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
JOB1   JOB2           JOB3          JOB4



                               Polling jobs status for example
                                    "look for new failures"


         JOB de Clean




              Launch Clean
               Procedure
              OSDC - Jenkins                                     15
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
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
•  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
•  Support des projets Ruby
    – Builders
      • Ruby, Rake

   – Outils de métriques
      •  uby metrics
       R




                              OSDC - Jenkins   19
•  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
•  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
•  Support des projets ADA
    – Builders
      •  natmake, Gprbuild
       G

   – Outils de tests
      • xUnit (AUnit)

   – Outils de métriques
      • Gnatcheck, Gnatmetric




                                OSDC - Jenkins   22
•  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
OSDC - Jenkins   24
•  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
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
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
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
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
•  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
•  Plusieurs plugins d'intégration




                          Plugin vmware              Plugin CloudBees
                                                  Deployer sur RUN@Cloud




                            PluginJClouds
   Plugin Amazon
        EC2




                                 OSDC - Jenkins                            31
•  Gestion des différents protocoles
    – File
       AritfactDeployer
   – SSH
       Publish over SSH
   – FTP
       Publish over FTP
   – CIFS
       Publish over CIFS




                               OSDC - Jenkins   32
•  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
OSDC - Jenkins   34

Contenu connexe

Tendances

Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielle
David Buros
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
laurent_opnworks
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
Klee Group
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
Habib MAALEM
 

Tendances (20)

SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/HudsonSonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielle
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec Jenkins
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continu
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
Du Docker dans notre workflow de dev
Du Docker dans notre workflow de devDu Docker dans notre workflow de dev
Du Docker dans notre workflow de dev
 
Puppet, la philosophie DevOps
Puppet, la philosophie DevOpsPuppet, la philosophie DevOps
Puppet, la philosophie DevOps
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous Delivery
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - Puppet
 
Maven
MavenMaven
Maven
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous Delivery
 
Hermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter MeuelHermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter Meuel
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
 

En vedette

Jenkins_UserMeetup_Paris_201105
Jenkins_UserMeetup_Paris_201105Jenkins_UserMeetup_Paris_201105
Jenkins_UserMeetup_Paris_201105
Gregory Boissinot
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
Dennys Hsieh
 
Manuel de construction du sauna palermo
Manuel de construction du sauna palermoManuel de construction du sauna palermo
Manuel de construction du sauna palermo
SpaAlina
 
Cité état sparte
Cité état sparteCité état sparte
Cité état sparte
raquel123457
 
III Workshop Google Analytics para Ejecutivos de Marketing
III Workshop Google Analytics para Ejecutivos de MarketingIII Workshop Google Analytics para Ejecutivos de Marketing
III Workshop Google Analytics para Ejecutivos de Marketing
Neo Consulting
 
Algunas dimensiones profesionalizacion_docentes_representaciones_temas_agenda...
Algunas dimensiones profesionalizacion_docentes_representaciones_temas_agenda...Algunas dimensiones profesionalizacion_docentes_representaciones_temas_agenda...
Algunas dimensiones profesionalizacion_docentes_representaciones_temas_agenda...
Gustavo Guinle
 

En vedette (20)

Jenkins_UserMeetup_Paris_201105
Jenkins_UserMeetup_Paris_201105Jenkins_UserMeetup_Paris_201105
Jenkins_UserMeetup_Paris_201105
 
JUC Paris 2012 — Jenkins @ Nuxeo
JUC Paris 2012 — Jenkins @ NuxeoJUC Paris 2012 — Jenkins @ Nuxeo
JUC Paris 2012 — Jenkins @ Nuxeo
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatisé
 
[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
 
Manejo de emociones
Manejo de emocionesManejo de emociones
Manejo de emociones
 
IPS Communiqué du 17 juin 2013 : financement protection sociale
IPS Communiqué du 17 juin 2013 : financement protection socialeIPS Communiqué du 17 juin 2013 : financement protection sociale
IPS Communiqué du 17 juin 2013 : financement protection sociale
 
Aide CAE - Pôle Emploi - Embauches à compter du 25 mars 2015
Aide CAE - Pôle Emploi - Embauches à compter du 25 mars 2015Aide CAE - Pôle Emploi - Embauches à compter du 25 mars 2015
Aide CAE - Pôle Emploi - Embauches à compter du 25 mars 2015
 
Diarrea
DiarreaDiarrea
Diarrea
 
Como comprar Cursos 100Negocios
Como comprar Cursos 100NegociosComo comprar Cursos 100Negocios
Como comprar Cursos 100Negocios
 
Manuel de construction du sauna palermo
Manuel de construction du sauna palermoManuel de construction du sauna palermo
Manuel de construction du sauna palermo
 
Cité état sparte
Cité état sparteCité état sparte
Cité état sparte
 
ADECOL avril 2015
ADECOL avril 2015ADECOL avril 2015
ADECOL avril 2015
 
Etappenstall dp-mai-2014
Etappenstall dp-mai-2014Etappenstall dp-mai-2014
Etappenstall dp-mai-2014
 
Startup Weekend: Consejos para las Presentaciones Finales
Startup Weekend: Consejos para las Presentaciones FinalesStartup Weekend: Consejos para las Presentaciones Finales
Startup Weekend: Consejos para las Presentaciones Finales
 
III Workshop Google Analytics para Ejecutivos de Marketing
III Workshop Google Analytics para Ejecutivos de MarketingIII Workshop Google Analytics para Ejecutivos de Marketing
III Workshop Google Analytics para Ejecutivos de Marketing
 
Présentation parents jv
Présentation parents jvPrésentation parents jv
Présentation parents jv
 
GlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilitéGlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilité
 
Atelier J1 #vem5 9 exemples à décortiquer et révélateurs des tendances dans l...
Atelier J1 #vem5 9 exemples à décortiquer et révélateurs des tendances dans l...Atelier J1 #vem5 9 exemples à décortiquer et révélateurs des tendances dans l...
Atelier J1 #vem5 9 exemples à décortiquer et révélateurs des tendances dans l...
 
Algunas dimensiones profesionalizacion_docentes_representaciones_temas_agenda...
Algunas dimensiones profesionalizacion_docentes_representaciones_temas_agenda...Algunas dimensiones profesionalizacion_docentes_representaciones_temas_agenda...
Algunas dimensiones profesionalizacion_docentes_representaciones_temas_agenda...
 

Similaire à JENKINS_OWF11_OSDC_PARIS20110924

0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf
Ombotimbe Salifou
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
qsdqsd4
 
[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
 

Similaire à JENKINS_OWF11_OSDC_PARIS20110924 (20)

gradle_nantesjug
gradle_nantesjuggradle_nantesjug
gradle_nantesjug
 
Gradle_LyonJUG
Gradle_LyonJUGGradle_LyonJUG
Gradle_LyonJUG
 
Xcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoXcode Server - Jeffrey Macko
Xcode Server - Jeffrey Macko
 
Gradle_ToulouseJUG
Gradle_ToulouseJUGGradle_ToulouseJUG
Gradle_ToulouseJUG
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp Docker
 
CI-Jenkins.pptx
CI-Jenkins.pptxCI-Jenkins.pptx
CI-Jenkins.pptx
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
Soiree Maven 2
Soiree Maven 2Soiree Maven 2
Soiree Maven 2
 
gradle_lavajug
gradle_lavajuggradle_lavajug
gradle_lavajug
 
Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?
 
0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf
 
Présentation1
Présentation1Présentation1
Présentation1
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Ê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
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Gradle_ToursJUG
Gradle_ToursJUGGradle_ToursJUG
Gradle_ToursJUG
 
Gradle_BordeauxJUG
Gradle_BordeauxJUGGradle_BordeauxJUG
Gradle_BordeauxJUG
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
 
[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
 

Plus de Gregory Boissinot (14)

Practical Software Architecture DDD
Practical Software Architecture DDDPractical Software Architecture DDD
Practical Software Architecture DDD
 
DDD Introduction
DDD IntroductionDDD Introduction
DDD Introduction
 
SOAT Agile Day 2017 DDD
SOAT Agile Day 2017 DDDSOAT Agile Day 2017 DDD
SOAT Agile Day 2017 DDD
 
DevDay2017 ESGI Essential DDD
DevDay2017 ESGI Essential DDDDevDay2017 ESGI Essential DDD
DevDay2017 ESGI Essential DDD
 
Beyond Relational Databases
Beyond Relational DatabasesBeyond Relational Databases
Beyond Relational Databases
 
Paris Redis Meetup Introduction
Paris Redis Meetup IntroductionParis Redis Meetup Introduction
Paris Redis Meetup Introduction
 
Paris Redis Meetup Starting
Paris Redis Meetup StartingParis Redis Meetup Starting
Paris Redis Meetup Starting
 
PZ_Microservices101_20150210
PZ_Microservices101_20150210PZ_Microservices101_20150210
PZ_Microservices101_20150210
 
Spring Integration JUG SummerCamp 2013
Spring Integration JUG SummerCamp 2013Spring Integration JUG SummerCamp 2013
Spring Integration JUG SummerCamp 2013
 
Jenkins-meetup
Jenkins-meetupJenkins-meetup
Jenkins-meetup
 
Gradle_Paris2010
Gradle_Paris2010Gradle_Paris2010
Gradle_Paris2010
 
Gradle_NormandyJUG
Gradle_NormandyJUGGradle_NormandyJUG
Gradle_NormandyJUG
 
Gradle_BreizJUG
Gradle_BreizJUGGradle_BreizJUG
Gradle_BreizJUG
 
Gradle_YaJUG
Gradle_YaJUGGradle_YaJUG
Gradle_YaJUG
 

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
  • 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