SlideShare une entreprise Scribd logo
Jenkins
Copyright Ouhamza, All rights reserved 1
Copyright Ouhamza, All rights reserved
/moi
Développeur Java
@Ouhamza (partout)
2
Lhouceine OUHAMZA
Copyright Ouhamza, All rights reserved
Toute organisation ayant besoin de déployer des
applications rapidement et efficacement peut bénéficier
de ses fonctionnalités de base.
3
Introduction générale
Copyright Ouhamza, All rights reserved 4
Agile Vs Devops
Copyright Ouhamza, All rights reserved
Agile Vs DevOps
5
Copyright Ouhamza, All rights reserved 6
Les differents environments
1-Your computer
2-Dummy database
3-preliminary testing
1-Similar to production
2-All testing happens here
3-Demo for client
1-Making a project live
2-Where users access
3-Is the most important.
4-You can't have any
mistakes here
Les trois principaux environnements sont: le développement, la recette et la production.
Development server Recette server Production server
Copyright Ouhamza, All rights reserved 7
Processus global d’un produit informatique
Copyright Ouhamza, All rights reserved 8
Processus global d’un produit informatique
9Copyright Ouhamza, All rights reserved
Copyright Ouhamza, All rights reserved
❏ C’est une pratique n'est-elle pas un outil.
❏ Connexion au repositories distant.
❏ Faire un build (générer un package).
❏ Avoir un moyen de notification ( email )
Integration continue CI
10
Copyright Ouhamza, All rights reserved 11
Processus d’integration continue
Copyright Ouhamza, All rights reserved
❏ Réduire les risques
❏ Détection des bugs immediatement.
❏ Réduire la routine.
❏ Assurer le déploiement de code de source.
❏ Automatiser le processus de build.
❏ Plusieurs apps + versions + environnements + sans CI ==>
Trop de temps et d'efforts
Avantages : Integration continue CI
12
Copyright Ouhamza, All rights reserved 13
Quelques Outils
Pour l'intégration continue on a
choisi l’outil le plus populaire et
le plus répondus, Jenkins.
Copyright Ouhamza, All rights reserved
❏ Jenkins c’est outil d'intégration continue qui permet automatiser et
exécuter les tâches.
❏ Créer des pipelines d'intégration continue: build / run / test
❏ Basé sur Java / Open source / apparu en 2005
❏ Extensible ( plus de 1000 plugins )
❏ Quelle que soit la plateforme sur laquelle vous travaillez
❏ GUI : port 80 / CLI
❏ La documentation officielle: https://jenkins.io/doc
C’est quoi Jenkins ?
14
Copyright Ouhamza, All rights reserved 15
Qu'est-ce que Jenkins peut faire?
❏ Générer des rapports de test
❏ Intégration avec de nombreux systèmes de contrôle de version
différents (git, gitlab….)
❏ Poussez vers divers référentiels d'artefacts (Artifactory, archiva…)
❏ Déployer directement dans des environnements de production
ou de test
❏ Informer les parties prenantes de l'état de la build ( notification)
…et beaucoup plus
Copyright Ouhamza, All rights reserved 16
Qui utilise Jenkins?
Copyright Ouhamza, All rights reserved 17
Architecture de jenkins
Copyright Ouhamza, All rights reserved 18
Architecture de jenkins
Copyright Ouhamza, All rights reserved 19
Architecture de jenkins
Copyright Ouhamza, All rights reserved 20
Architecture de jenkins
Copyright Ouhamza, All rights reserved 21
Architecture de jenkins
Copyright Ouhamza, All rights reserved
Vous aurez besoin de : Docker engine
$ sudo docker-compose up -d
$ sudo docker run -itd -p 1000:8080 jenkins/jenkins:lts
Installation jenkins dans docker
http://jenkins_server:1000/
Pour copier le mot de passe Administrateur:
$ sudo docker logs container_id
22
Copyright Ouhamza, All rights reserved
Installation jenkins hors docker
23
Pour Ubuntu, exécuter les commandes suivantes:
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add
-
$ sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > 
/etc/apt/sources.list.d/jenkins.list'
$ sudo apt-get update
$ sudo apt-get install jenkins
NB: on peut aussi l’installer à travers un fichier war (java):
java -jar jenkins.war.
Vous aurez besoin de : Java 8 / 11
Copyright Ouhamza, All rights reserved
La page d’accueil de jenkins
24
Copyright Ouhamza, All rights reserved
❏ Permet de gérer les rôles et users
❏ Affectation des tâches à un rôle
❏ Affectation d’un pattern de jobs à un rôle: java.*
Pligun : Role-based Authorization Strategy
25
Copyright Ouhamza, All rights reserved
Le premier Job
26
Pipeline est un type de job le plus utilisé,
c’est une chaîne d’actions à exécuter,
on peut basé sur le code groovy.
Copyright Ouhamza, All rights reserved
Déclencher un job
27
❏ À partir des commits de code source.
❏ Après la fin de compilation d’autres job.
❏ Planifié pour s'exécuter à l'heure spécifiée.
❏ Le build manuel.
Copyright Ouhamza, All rights reserved
Planification des jobs
● Toutes les minutes: * * * * *
● Toutes les 15 minutes: H/15 * * * *
● Tous les Lundi à 15h00: 00 15 * * 1
28
Copyright Ouhamza, All rights reserved
Pipeline
29
❏ Chaque commit
déclenche l'exécution du
pipeline.
❏ Des notifications sont
envoyés à l'équipe à
chaque étape.
❏ Minimiser le temps
d'exécution.
Copyright Ouhamza, All rights reserved
Deux types de pipeline ( scripté )
30
il est basé sur le script Groovy
comme langage spécifique au
domaine. Un ou plusieurs blocs
de nœuds effectuent le travail de
base tout au long du pipeline.
Copyright Ouhamza, All rights reserved
Deux types de pipeline ( déclaratif )
31
il fournit une syntaxe simple et
conviviale pour définir un pipeline sans
avoir besoin d'un script Groovy.
Copyright Ouhamza, All rights reserved
Stages parallèles
32
Plugin : Ocean Blue
Copyright Ouhamza, All rights reserved
❏ On peut cloner un projet git:
https://github.com/ouhamzalhss/Jenkins-demo.git
Integration Git
33
Copyright Ouhamza, All rights reserved
Plugin: Git
Travail avec Plugin Git, un dépôt git privé nécessite de configurer
l’authentification au niveau jenkins.
34
Copyright Ouhamza, All rights reserved
❏ Sert à écouter en permanence l'état d’un dépôt git.
❏ Chaque nouveau commit : un job (build) qui va se lancer automatiquement.
Git et son trigger
35
Copyright Ouhamza, All rights reserved
❏ Sert à visualiser des jobs en cascade.
Plugin : Delivery pipeline
36
Copyright Ouhamza, All rights reserved 37
Plugin : Build monitor
Copyright Ouhamza, All rights reserved
Parfois après chaque installation d’un plugin, Nous pouvons redémarrer
manuellement Jenkins en ajoutant restart, safeRestart comme paramètre
d'URL.
38
Redémarrer jenkins
$ sudo service jenkins restart
Copyright Ouhamza, All rights reserved
Pour créer une sauvegarde de vos jobs Jenkins et de votre configuration, installez
simplement le plugin ThinBackup. Ensuite, allez sur Gérer Jenkins -> lien
ThinBackup.
39
Plugin: ThinBackup
Copyright Ouhamza, All rights reserved
❏ Créer un projet maven
❏ Configurer Maven dans Jenkins.
❏ Cloner le projet à partir d’un dépôt distant
❏ Lancer le build
Builder un projet maven in jenkins
40
Copyright Ouhamza, All rights reserved
Jenkins nous permet de lancer un conteneur docker.
A condition: sudo usermod -aG docker jenkinsUser
On va créer un job pipeline basé ce script:
41
Docker: lancer un container
node {
docker.image('nginx:latest').withRun('-p 80:80') { c ->
sh 'docker ps'
sh 'curl localhost'
}
}
Copyright Ouhamza, All rights reserved
Après avoir vu comment lancer un conteneur docker, nous allons
découvrir comment créer une image docker à partir d'un build.
Pour cela nous allons créer un Dockerfile et un Jenkinsfile de
manière à fonctionner à partir d'un dépôt distant.
42
Dockerfile et jenkinsfile
Copyright Ouhamza, All rights reserved 43
Dockerfile et jenkinsfile
Dockerfile
Jenkinsfile
Copyright Ouhamza, All rights reserved 44
Master et slave
Copyright Ouhamza, All rights reserved 45
Master et slave
pipeline {
//agent any
agent none
stages {
stage('clone') {
agent { label 'machineSlave' } // cas d’agent none
steps { }
}
}
}
Exemple d’un pipeline :
Copyright Ouhamza, All rights reserved
Un exemple pratique
46
Nous allons compiler les différents cas d'usage de jenkins que nous avons vu
précédemment. C'est à dire :
❏ Clone via des dépôts git
❏ Build/test maven
❏ Construction d'une image docker
❏ Run d'une image docker
❏ Push d'une image avec un tag ( Registry )
❏ Déploiement via Ansible sur une machine distante.
Copyright Ouhamza, All rights reserved 47
CI nous aide à réaliser une réaction très tôt.
Les premières réactions nous permettent de trouver des bogues au
début de la phase de test, et de réduire l'écart de communication.
Conclusion
Copyright Ouhamza, All rights reserved 48
49
+212 677316303
ouhamza.web.pro@gmail.com
Contactez nous 24x7
Merci de votre attention
50
DEMO

Contenu connexe

PDF
DevOps 3 - Docker.pdf
GhofraneFerchichi2
 
PDF
Jenkins DevOps 1-Introduction DevOps 1-Introduction
GhofraneFerchichi2
 
PPTX
CI-Jenkins.pptx
MEDOBEST1
 
PDF
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
XavierPestel
 
PDF
Gitlab CI : Integration et Déploiement Continue
Vincent Composieux
 
PDF
Cours Devops Sparks.pptx.pdf
boulonvert
 
PPTX
Intégration de SonarQube dans GitLab ci
wiemfourati
 
PPTX
Introduction à la démarche Devops
Romain Chalumeau
 
DevOps 3 - Docker.pdf
GhofraneFerchichi2
 
Jenkins DevOps 1-Introduction DevOps 1-Introduction
GhofraneFerchichi2
 
CI-Jenkins.pptx
MEDOBEST1
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
XavierPestel
 
Gitlab CI : Integration et Déploiement Continue
Vincent Composieux
 
Cours Devops Sparks.pptx.pdf
boulonvert
 
Intégration de SonarQube dans GitLab ci
wiemfourati
 
Introduction à la démarche Devops
Romain Chalumeau
 

Tendances (20)

PDF
Intégration continue et déploiement continue avec Jenkins
Kokou Gaglo
 
PDF
Tadx - Présentation Conteneurisation
TADx
 
PDF
Introduction à l’intégration continue avec Jenkins
Eric Hogue
 
PPTX
Présentation DEVOPS.pptx
boulonvert
 
PPTX
Presentation of framework Angular
Lhouceine OUHAMZA
 
PPT
Formation jpa-hibernate-spring-data
Lhouceine OUHAMZA
 
PDF
Support NodeJS avec TypeScript Express MongoDB
ENSET, Université Hassan II Casablanca
 
PPT
Tests Logiciel
Nathaniel Richand
 
PDF
cours java complet-2.pdf
Jaouad Assabbour
 
PDF
Sécurité des Applications Web avec Json Web Token (JWT)
ENSET, Université Hassan II Casablanca
 
PDF
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Ippon
 
PDF
Angular Framework présentation PPT LIGHT
tayebbousfiha1
 
PDF
Introduction à DevOps
Microsoft
 
PPTX
Angular
Mahmoud Nbet
 
PPTX
Workshop spring session 2 - La persistance au sein des applications Java
Antoine Rey
 
PDF
L'API Collector dans tous ses états
José Paumard
 
PPT
Spring mvc
Lhouceine OUHAMZA
 
PDF
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
ENSET, Université Hassan II Casablanca
 
PDF
Support de cours angular
ENSET, Université Hassan II Casablanca
 
Intégration continue et déploiement continue avec Jenkins
Kokou Gaglo
 
Tadx - Présentation Conteneurisation
TADx
 
Introduction à l’intégration continue avec Jenkins
Eric Hogue
 
Présentation DEVOPS.pptx
boulonvert
 
Presentation of framework Angular
Lhouceine OUHAMZA
 
Formation jpa-hibernate-spring-data
Lhouceine OUHAMZA
 
Support NodeJS avec TypeScript Express MongoDB
ENSET, Université Hassan II Casablanca
 
Tests Logiciel
Nathaniel Richand
 
cours java complet-2.pdf
Jaouad Assabbour
 
Sécurité des Applications Web avec Json Web Token (JWT)
ENSET, Université Hassan II Casablanca
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Ippon
 
Angular Framework présentation PPT LIGHT
tayebbousfiha1
 
Introduction à DevOps
Microsoft
 
Angular
Mahmoud Nbet
 
Workshop spring session 2 - La persistance au sein des applications Java
Antoine Rey
 
L'API Collector dans tous ses états
José Paumard
 
Spring mvc
Lhouceine OUHAMZA
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
ENSET, Université Hassan II Casablanca
 
Support de cours angular
ENSET, Université Hassan II Casablanca
 
Publicité

Similaire à Jenkins (20)

PDF
Jenkins Workflow
Jean Detoeuf
 
PDF
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
Membré Guillaume
 
PDF
Jenkins - perdre du temps pour en gagner
Geeks Anonymes
 
PPTX
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Jean-Philippe Briend
 
PPTX
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
Jean-Philippe Briend
 
PDF
DevMobCA: Continuous integration
Olivier Destrebecq
 
PPTX
Realworld cd pipelines
TREEPTIK
 
PDF
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm
 
PDF
Plateformes et infrastructure infonuagique natif de ville de Montréall
CloudOps2005
 
PDF
What's Next Replay - IC / Jenkins
ZenikaOuest
 
ODP
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Ahmed Archive
 
ODP
Integration continue - Introduction
Olivier ETIENNE
 
PDF
Industrialisation PHP - Canal+
ekino
 
PDF
SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...
Damien Duportal
 
KEY
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
CocoaHeads France
 
PDF
De la chaîne de production au SI géré par des logiciels
Johan Moreau
 
PPTX
Jenkins - Les jeudis de la découverte
Stephane Couzinier
 
PDF
Dev ops - Contiuous delivery
Patrice Ferlet
 
PDF
Chaine de production pipeline
Nicolas wallerand
 
PDF
Intégration continue des projets PHP avec Jenkins
Hugo Hamon
 
Jenkins Workflow
Jean Detoeuf
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
Membré Guillaume
 
Jenkins - perdre du temps pour en gagner
Geeks Anonymes
 
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Jean-Philippe Briend
 
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
Jean-Philippe Briend
 
DevMobCA: Continuous integration
Olivier Destrebecq
 
Realworld cd pipelines
TREEPTIK
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm
 
Plateformes et infrastructure infonuagique natif de ville de Montréall
CloudOps2005
 
What's Next Replay - IC / Jenkins
ZenikaOuest
 
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Ahmed Archive
 
Integration continue - Introduction
Olivier ETIENNE
 
Industrialisation PHP - Canal+
ekino
 
SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...
Damien Duportal
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
CocoaHeads France
 
De la chaîne de production au SI géré par des logiciels
Johan Moreau
 
Jenkins - Les jeudis de la découverte
Stephane Couzinier
 
Dev ops - Contiuous delivery
Patrice Ferlet
 
Chaine de production pipeline
Nicolas wallerand
 
Intégration continue des projets PHP avec Jenkins
Hugo Hamon
 
Publicité

Plus de Lhouceine OUHAMZA (12)

PPTX
Présentation sur internet.pptx
Lhouceine OUHAMZA
 
PPTX
WEB SERVICE SOAP, JAVA, XML, JAXWS
Lhouceine OUHAMZA
 
PDF
Complete Java Course
Lhouceine OUHAMZA
 
PPTX
Prometheus and Grafana
Lhouceine OUHAMZA
 
PPTX
Kubernetes
Lhouceine OUHAMZA
 
PPTX
Scrum course
Lhouceine OUHAMZA
 
PPTX
Functional programming
Lhouceine OUHAMZA
 
PPTX
Hibernate jpa
Lhouceine OUHAMZA
 
PPT
Spring AOP
Lhouceine OUHAMZA
 
PPT
Extreme Programming (XP)
Lhouceine OUHAMZA
 
PPTX
Systemes authentification
Lhouceine OUHAMZA
 
PPTX
Spring ioc
Lhouceine OUHAMZA
 
Présentation sur internet.pptx
Lhouceine OUHAMZA
 
WEB SERVICE SOAP, JAVA, XML, JAXWS
Lhouceine OUHAMZA
 
Complete Java Course
Lhouceine OUHAMZA
 
Prometheus and Grafana
Lhouceine OUHAMZA
 
Kubernetes
Lhouceine OUHAMZA
 
Scrum course
Lhouceine OUHAMZA
 
Functional programming
Lhouceine OUHAMZA
 
Hibernate jpa
Lhouceine OUHAMZA
 
Spring AOP
Lhouceine OUHAMZA
 
Extreme Programming (XP)
Lhouceine OUHAMZA
 
Systemes authentification
Lhouceine OUHAMZA
 
Spring ioc
Lhouceine OUHAMZA
 

Dernier (7)

PDF
Talk REseaux ICT-2 BLABLABLABLABLABLABLABLA
Souhailsouhail5
 
PDF
Cours SPC resumé-1.pdf...................
abrahamkyelem
 
PDF
DEFENSE_PROFONDEUR_securite_reseau_inf.pdf
HadadMoussaMalan
 
PDF
Chapitre 7 - Routage dynamique...........
abrahamkyelem
 
PDF
Régulateurs-Numériques cours dasservissement
ophiliafa18
 
PDF
Webinaire ALONGE #2 - Découvrez de nouveaux résultats sur l'élevage des génis...
Institut de l'Elevage - Idele
 
PPTX
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
salaheldinmuhammed04
 
Talk REseaux ICT-2 BLABLABLABLABLABLABLABLA
Souhailsouhail5
 
Cours SPC resumé-1.pdf...................
abrahamkyelem
 
DEFENSE_PROFONDEUR_securite_reseau_inf.pdf
HadadMoussaMalan
 
Chapitre 7 - Routage dynamique...........
abrahamkyelem
 
Régulateurs-Numériques cours dasservissement
ophiliafa18
 
Webinaire ALONGE #2 - Découvrez de nouveaux résultats sur l'élevage des génis...
Institut de l'Elevage - Idele
 
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
salaheldinmuhammed04
 

Jenkins

  • 1. Jenkins Copyright Ouhamza, All rights reserved 1
  • 2. Copyright Ouhamza, All rights reserved /moi Développeur Java @Ouhamza (partout) 2 Lhouceine OUHAMZA
  • 3. Copyright Ouhamza, All rights reserved Toute organisation ayant besoin de déployer des applications rapidement et efficacement peut bénéficier de ses fonctionnalités de base. 3 Introduction générale
  • 4. Copyright Ouhamza, All rights reserved 4 Agile Vs Devops
  • 5. Copyright Ouhamza, All rights reserved Agile Vs DevOps 5
  • 6. Copyright Ouhamza, All rights reserved 6 Les differents environments 1-Your computer 2-Dummy database 3-preliminary testing 1-Similar to production 2-All testing happens here 3-Demo for client 1-Making a project live 2-Where users access 3-Is the most important. 4-You can't have any mistakes here Les trois principaux environnements sont: le développement, la recette et la production. Development server Recette server Production server
  • 7. Copyright Ouhamza, All rights reserved 7 Processus global d’un produit informatique
  • 8. Copyright Ouhamza, All rights reserved 8 Processus global d’un produit informatique
  • 9. 9Copyright Ouhamza, All rights reserved
  • 10. Copyright Ouhamza, All rights reserved ❏ C’est une pratique n'est-elle pas un outil. ❏ Connexion au repositories distant. ❏ Faire un build (générer un package). ❏ Avoir un moyen de notification ( email ) Integration continue CI 10
  • 11. Copyright Ouhamza, All rights reserved 11 Processus d’integration continue
  • 12. Copyright Ouhamza, All rights reserved ❏ Réduire les risques ❏ Détection des bugs immediatement. ❏ Réduire la routine. ❏ Assurer le déploiement de code de source. ❏ Automatiser le processus de build. ❏ Plusieurs apps + versions + environnements + sans CI ==> Trop de temps et d'efforts Avantages : Integration continue CI 12
  • 13. Copyright Ouhamza, All rights reserved 13 Quelques Outils Pour l'intégration continue on a choisi l’outil le plus populaire et le plus répondus, Jenkins.
  • 14. Copyright Ouhamza, All rights reserved ❏ Jenkins c’est outil d'intégration continue qui permet automatiser et exécuter les tâches. ❏ Créer des pipelines d'intégration continue: build / run / test ❏ Basé sur Java / Open source / apparu en 2005 ❏ Extensible ( plus de 1000 plugins ) ❏ Quelle que soit la plateforme sur laquelle vous travaillez ❏ GUI : port 80 / CLI ❏ La documentation officielle: https://jenkins.io/doc C’est quoi Jenkins ? 14
  • 15. Copyright Ouhamza, All rights reserved 15 Qu'est-ce que Jenkins peut faire? ❏ Générer des rapports de test ❏ Intégration avec de nombreux systèmes de contrôle de version différents (git, gitlab….) ❏ Poussez vers divers référentiels d'artefacts (Artifactory, archiva…) ❏ Déployer directement dans des environnements de production ou de test ❏ Informer les parties prenantes de l'état de la build ( notification) …et beaucoup plus
  • 16. Copyright Ouhamza, All rights reserved 16 Qui utilise Jenkins?
  • 17. Copyright Ouhamza, All rights reserved 17 Architecture de jenkins
  • 18. Copyright Ouhamza, All rights reserved 18 Architecture de jenkins
  • 19. Copyright Ouhamza, All rights reserved 19 Architecture de jenkins
  • 20. Copyright Ouhamza, All rights reserved 20 Architecture de jenkins
  • 21. Copyright Ouhamza, All rights reserved 21 Architecture de jenkins
  • 22. Copyright Ouhamza, All rights reserved Vous aurez besoin de : Docker engine $ sudo docker-compose up -d $ sudo docker run -itd -p 1000:8080 jenkins/jenkins:lts Installation jenkins dans docker http://jenkins_server:1000/ Pour copier le mot de passe Administrateur: $ sudo docker logs container_id 22
  • 23. Copyright Ouhamza, All rights reserved Installation jenkins hors docker 23 Pour Ubuntu, exécuter les commandes suivantes: $ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - $ sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' $ sudo apt-get update $ sudo apt-get install jenkins NB: on peut aussi l’installer à travers un fichier war (java): java -jar jenkins.war. Vous aurez besoin de : Java 8 / 11
  • 24. Copyright Ouhamza, All rights reserved La page d’accueil de jenkins 24
  • 25. Copyright Ouhamza, All rights reserved ❏ Permet de gérer les rôles et users ❏ Affectation des tâches à un rôle ❏ Affectation d’un pattern de jobs à un rôle: java.* Pligun : Role-based Authorization Strategy 25
  • 26. Copyright Ouhamza, All rights reserved Le premier Job 26 Pipeline est un type de job le plus utilisé, c’est une chaîne d’actions à exécuter, on peut basé sur le code groovy.
  • 27. Copyright Ouhamza, All rights reserved Déclencher un job 27 ❏ À partir des commits de code source. ❏ Après la fin de compilation d’autres job. ❏ Planifié pour s'exécuter à l'heure spécifiée. ❏ Le build manuel.
  • 28. Copyright Ouhamza, All rights reserved Planification des jobs ● Toutes les minutes: * * * * * ● Toutes les 15 minutes: H/15 * * * * ● Tous les Lundi à 15h00: 00 15 * * 1 28
  • 29. Copyright Ouhamza, All rights reserved Pipeline 29 ❏ Chaque commit déclenche l'exécution du pipeline. ❏ Des notifications sont envoyés à l'équipe à chaque étape. ❏ Minimiser le temps d'exécution.
  • 30. Copyright Ouhamza, All rights reserved Deux types de pipeline ( scripté ) 30 il est basé sur le script Groovy comme langage spécifique au domaine. Un ou plusieurs blocs de nœuds effectuent le travail de base tout au long du pipeline.
  • 31. Copyright Ouhamza, All rights reserved Deux types de pipeline ( déclaratif ) 31 il fournit une syntaxe simple et conviviale pour définir un pipeline sans avoir besoin d'un script Groovy.
  • 32. Copyright Ouhamza, All rights reserved Stages parallèles 32 Plugin : Ocean Blue
  • 33. Copyright Ouhamza, All rights reserved ❏ On peut cloner un projet git: https://github.com/ouhamzalhss/Jenkins-demo.git Integration Git 33
  • 34. Copyright Ouhamza, All rights reserved Plugin: Git Travail avec Plugin Git, un dépôt git privé nécessite de configurer l’authentification au niveau jenkins. 34
  • 35. Copyright Ouhamza, All rights reserved ❏ Sert à écouter en permanence l'état d’un dépôt git. ❏ Chaque nouveau commit : un job (build) qui va se lancer automatiquement. Git et son trigger 35
  • 36. Copyright Ouhamza, All rights reserved ❏ Sert à visualiser des jobs en cascade. Plugin : Delivery pipeline 36
  • 37. Copyright Ouhamza, All rights reserved 37 Plugin : Build monitor
  • 38. Copyright Ouhamza, All rights reserved Parfois après chaque installation d’un plugin, Nous pouvons redémarrer manuellement Jenkins en ajoutant restart, safeRestart comme paramètre d'URL. 38 Redémarrer jenkins $ sudo service jenkins restart
  • 39. Copyright Ouhamza, All rights reserved Pour créer une sauvegarde de vos jobs Jenkins et de votre configuration, installez simplement le plugin ThinBackup. Ensuite, allez sur Gérer Jenkins -> lien ThinBackup. 39 Plugin: ThinBackup
  • 40. Copyright Ouhamza, All rights reserved ❏ Créer un projet maven ❏ Configurer Maven dans Jenkins. ❏ Cloner le projet à partir d’un dépôt distant ❏ Lancer le build Builder un projet maven in jenkins 40
  • 41. Copyright Ouhamza, All rights reserved Jenkins nous permet de lancer un conteneur docker. A condition: sudo usermod -aG docker jenkinsUser On va créer un job pipeline basé ce script: 41 Docker: lancer un container node { docker.image('nginx:latest').withRun('-p 80:80') { c -> sh 'docker ps' sh 'curl localhost' } }
  • 42. Copyright Ouhamza, All rights reserved Après avoir vu comment lancer un conteneur docker, nous allons découvrir comment créer une image docker à partir d'un build. Pour cela nous allons créer un Dockerfile et un Jenkinsfile de manière à fonctionner à partir d'un dépôt distant. 42 Dockerfile et jenkinsfile
  • 43. Copyright Ouhamza, All rights reserved 43 Dockerfile et jenkinsfile Dockerfile Jenkinsfile
  • 44. Copyright Ouhamza, All rights reserved 44 Master et slave
  • 45. Copyright Ouhamza, All rights reserved 45 Master et slave pipeline { //agent any agent none stages { stage('clone') { agent { label 'machineSlave' } // cas d’agent none steps { } } } } Exemple d’un pipeline :
  • 46. Copyright Ouhamza, All rights reserved Un exemple pratique 46 Nous allons compiler les différents cas d'usage de jenkins que nous avons vu précédemment. C'est à dire : ❏ Clone via des dépôts git ❏ Build/test maven ❏ Construction d'une image docker ❏ Run d'une image docker ❏ Push d'une image avec un tag ( Registry ) ❏ Déploiement via Ansible sur une machine distante.
  • 47. Copyright Ouhamza, All rights reserved 47
  • 48. CI nous aide à réaliser une réaction très tôt. Les premières réactions nous permettent de trouver des bogues au début de la phase de test, et de réduire l'écart de communication. Conclusion Copyright Ouhamza, All rights reserved 48

Notes de l'éditeur

  • #4: Livrer rapidement deployer rapidement. C’est à dire avoir un feedback rapide de la part de client
  • #6: Devops c la suite d’agilité
  • #10: L'intégration continue (CI) est une pratique qui gagne rapidement en popularité et fait partie intégrante du processus de développement logiciel. Il s'agit d'une pratique d'ingénierie logicielle où les modifications individuelles sont immédiatement testées et intégrées à un référentiel plus vaste. Il aide les développeurs à détecter les bogues de manière transparente à un stade précoce, car chaque enregistrement est vérifié par une génération automatisée. Il existe de nombreux serveurs CI disponibles dans l'industrie tels que Jenkins, Codeship, TravisCI, SemaphoreCI, CircleCI, Bamboo, Teamcity et plus, Jenkins étant l'un des plus populaires.
  • #11: L'intégration continue est une pratique de développement qui oblige les développeurs à intégrer du code dans un référentiel partagé à intervalles réguliers. Ce concept était destiné à supprimer le problème de trouver une occurrence ultérieure de problèmes dans le cycle de vie de la génération. L'intégration continue nécessite que les développeurs aient des builds fréquents. La pratique courante est que chaque fois qu'une validation de code se produit, une génération doit être déclenchée.
  • #15: Jenkins est une application puissante qui permet une intégration et une livraison continues des projets, quelle que soit la plateforme sur laquelle vous travaillez. C'est une source gratuite qui peut gérer tout type de build ou d'intégration continue. Vous pouvez intégrer Jenkins à un certain nombre de technologies de test et de déploiement. Dans ce didacticiel, nous expliquerons comment vous pouvez utiliser Jenkins pour créer et tester vos projets logiciels en continu.
  • #38: The Build Monitor plugin provides a visualization of the status and progress of selected Jenkins jobs. It displays an updated view automatically every couple of seconds using AJAX.
  • #39: The Build Monitor plugin provides a visualization of the status and progress of selected Jenkins jobs. It displays an updated view automatically every couple of seconds using AJAX.
  • #40: The Build Monitor plugin provides a visualization of the status and progress of selected Jenkins jobs. It displays an updated view automatically every couple of seconds using AJAX.