SlideShare une entreprise Scribd logo
Centred’ExcellenceenTechnologiesde
l’InformationetdelaCommunication
www.cetic.be
Jenkins
perdre du temps pour en gagner
Chef de projet
23 septembre 2015
Dimitri Durieux
Qui suis-je?
Dimitri Durieux
SonarQube : une autre vision de votre logiciel
• Chef de projet
• Master en sciences informatiques (UMons
2012)
Expertises:
• Analyse de logiciels & Qualité Produit
• Safety critical system
• Java & Scala
Twitter : @didurieux
www.cetic.be
Contenu
1. Intégration continue
1. Définition
2. Valeurs
3. Workflows
2. Jenkins
1. Overview
2. Motivations
3. Fonctionnalités
4. Utilisations
5. Exemples
6. Les plugins
3. Démo
4. Références
3
www.cetic.be
Intégration continue
4
www.cetic.be
Définition d’intégration continue
« Continuous Integration is a software development practice where
members of a team integrate their work frequently, usually each
person integrates at least daily - leading to multiple integrations
per day. Each integration is verified by an automated build
(including test) to detect integration errors as quickly as
possible.» Martin Flower
⇒ Pratique de développement
⇒ Intégration fréquente
⇒ Build et test automatique
⇒ Détection rapide d’erreurs
5
www.cetic.be
Définition d’intégration continue
La pratique d’intégration continue (CI) consiste à :
• Intégré
• Construire
• Testé
• Archivé
• Déployé
Réalisé régulièrement : chaque jour/commit
6
www.cetic.be
Valeur de la pratique
• Meilleure vision de l’avancement du projet
• Plus besoin de phase d’intégration
• Intégration au plus tôt
• Détection des bugs ASAP
• Le logiciel peut être déployé à tout moment
7
www.cetic.be
Workflow
8
• Code sources
• Tests
• Documentation
Entrées
• Build continu
• Tests continu
• Déploiement
continu
Intégration
continue • Rapport de tests
• Binaires
• Déploiement
Sorties
www.cetic.be
Outils d’intégration continue
• Gestion des sources :
• Subversion, Git, Mercurial
• Build continu :
• Jenkins, Atlassian Bamboo, Gitlab-CI, TeamCity, Cruise Control,
Apache Continuum
• Outil de test :
• Xunit, Cucumber, SoapUI, Selenium
• Dépôt d’artefacts :
• Artifactory, Nexus, Apache Archiva
9
www.cetic.be
Jenkins
10
www.cetic.be
Jenkins
• Développé en Java pour Java
• Interface Web
• Sous licence MIT
• Embarqué dans un serveur d’application
• Disponible en bundle (Tomcat)
• 1400+ plugins
• https://jenkins-ci.org/
11
www.cetic.be
Jenkins : Chiffres
12
Source : https://www.openhub.net/p/jenkins
www.cetic.be
Pourquoi Jenkins ?
• Flexible
• Configuration poussée
• Plugins
• Sans limite
• Open-sources
• Licence MIT
• Très bon support
• Large communauté
• Documentation
• Plugins
• API stable
• Documentation
13
www.cetic.be
Utilisateurs de Jenkins
14
www.cetic.be
Que peut faire Jenkins ?
• Automatisation des tâches de développement
• Lancement des tests
• Construction des releases
• Publication des tags, de la documentation, …
• Déploiement de l’environnement de tests
• Déploiement en production
• Notification
• Reporting
• Automatisation des tâches de maintenance
• Back up
• Mise à jour
• Log analysis
15
www.cetic.be
Utilisation de Jenkins : Création de Job
• Gestionnaire(s) de version
• Ce qui déclenche le build
• Cron, commit
• Les tâches de build
• Maven, Shell, Ms Build, etc.
• Les tâches d’après build
• Notification Email
• Publication des artéfacts, des rapports de tests
• Séquençage des jobs
• Attention aux lancements parallèles
16
www.cetic.be
Utilisation de Jenkins : lancement
• Lancement « press button »
• API-Rest pour lancer des Jobs à distance
• Monitoring des Jobs à distance
• Chaque lancement = construction
• Suivi en temps réel du logs
• Jenkins dispose de lanceurs
• Par défaut, un lanceur par core
• Possibilité d’ajouter des esclaves
17
www.cetic.be
Utilisation de Jenkins : reporting
• Chaque construction est tracée
• Status : failure, error, succeed !
• Logs toujours présents
• L’indice météo
• Indice des tendances
• Suivi des tests
• Augmentation de la couverture
• Evolution du taux d’échec
18
www.cetic.be
Exemple : page principale
19
www.cetic.be
Exemple : Page principale
20
www.cetic.be
Exemple : page de création d’un Job
21
www.cetic.be
Exemple : page de construction
22
www.cetic.be
Exemple : contenu d’un job mature
23
www.cetic.be
Gestion des plugins
24
• Plus de 1400 plugins
• 26 Catégories :
• Gestion du code source
• Déclencheurs
• Outils de build
• Notification du build
• Reporting
• Lancement et contrôle des « slaves »
• Uploader d’artefact
• Opération de post build
• Intégration de site/outil
• UI
• Développement .Net
• Développement iOS
• …
www.cetic.be
Démo
25
www.cetic.be
Conclusion
26
www.cetic.be
Résumé
• Intégration continue
• Gagner du temps
• Gagner en qualité
• Gestion du risque
• Jenkins
• Build en continu
• Mature, open-source, flexibles et reconnus
• Intégration des outils de développement
• Simple à installer, configurer et utiliser
27
www.cetic.be
Bonnes pratiques
• Activation de la sécurité
• Mettre en place un backup
• Installer des plugins
• Lancer tous vos tests
• Un job par branche, une branche par version
• Installer Jenkins sur une partition avec de l’espace disque
28
www.cetic.be
Références
• https://jenkins-ci.org/
• http://www.martinfowler.com/articles/continuousIntegration.html
• http://www.cs.colorado.edu/~kena/classes/5828/s12/presentation-
materials/bowesjesse.pdf
• https://wiki.jenkins-ci.org/pages/viewpage.action?pageId=58001258
29
linkedin.com/company/cetic
twitter.com/@CETIC
Aéropole de Charleroi-Gosselies
Bâtiment Éole
Rue des Frères Wright, 29/3
B-6041 Charleroi
Tel: +32.71.490.700
Fax: +32.71.490.799
www.cetic.be
info@cetic.be
Project Manager
071 490 767
Dimitri Durieux
dimitri.durieux@cetic.be
Contacts
0494 928 344

Contenu connexe

Jenkins - perdre du temps pour en gagner