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