SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
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

Tendances

Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...ENSET, Université Hassan II Casablanca
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOpsMicrosoft
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPYouness Boukouchi
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework springAntoine Rey
 
CI-Jenkins.pptx
CI-Jenkins.pptxCI-Jenkins.pptx
CI-Jenkins.pptxMEDOBEST1
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java Youness Boukouchi
 
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'tsJulien Wittouck
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiquesdenier
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
A la découverte de vue.js
A la découverte de vue.jsA la découverte de vue.js
A la découverte de vue.jsBruno Bonnin
 

Tendances (20)

Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et Administration
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Docker
DockerDocker
Docker
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
DEVOPS
DEVOPSDEVOPS
DEVOPS
 
Scrum course
Scrum courseScrum course
Scrum course
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework spring
 
CI-Jenkins.pptx
CI-Jenkins.pptxCI-Jenkins.pptx
CI-Jenkins.pptx
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
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
 
Nouveautés de java 8
Nouveautés de java 8Nouveautés de java 8
Nouveautés de java 8
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatique
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
A la découverte de vue.js
A la découverte de vue.jsA la découverte de vue.js
A la découverte de vue.js
 

Similaire à Jenkins

Installation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderInstallation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderMohamed Ben Bouzid
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...AbdellahELMAMOUN
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
 
De la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsDe la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsJohan Moreau
 
Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1easyopenerp
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud Héritier
 
Workshop ssh (OSSEC)
Workshop ssh (OSSEC)Workshop ssh (OSSEC)
Workshop ssh (OSSEC)Akram Rekik
 
Installer et configurer NAGIOS sous linux
Installer et configurer NAGIOS sous linuxInstaller et configurer NAGIOS sous linux
Installer et configurer NAGIOS sous linuxZakariyaa AIT ELMOUDEN
 
Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Julien Maitrehenry
 
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Aurelien Navarre
 

Similaire à Jenkins (20)

SDN OpenDaylight
SDN OpenDaylightSDN OpenDaylight
SDN OpenDaylight
 
Installation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderInstallation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey Spider
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
 
Mysql
MysqlMysql
Mysql
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
 
De la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsDe la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logiciels
 
Présentation devops&puppet 04112014
Présentation devops&puppet 04112014 Présentation devops&puppet 04112014
Présentation devops&puppet 04112014
 
Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Workshop ssh (OSSEC)
Workshop ssh (OSSEC)Workshop ssh (OSSEC)
Workshop ssh (OSSEC)
 
Workshop ssh
Workshop sshWorkshop ssh
Workshop ssh
 
graylog.pptx
graylog.pptxgraylog.pptx
graylog.pptx
 
Atelier ssh
Atelier sshAtelier ssh
Atelier ssh
 
openFrameworks
openFrameworksopenFrameworks
openFrameworks
 
Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
 
Installer et configurer NAGIOS sous linux
Installer et configurer NAGIOS sous linuxInstaller et configurer NAGIOS sous linux
Installer et configurer NAGIOS sous linux
 
Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?
 
M211-V1-0909.pptx.pdf
M211-V1-0909.pptx.pdfM211-V1-0909.pptx.pdf
M211-V1-0909.pptx.pdf
 
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
 

Plus de Lhouceine OUHAMZA (14)

Présentation sur internet.pptx
Présentation sur internet.pptxPrésentation sur internet.pptx
Présentation sur internet.pptx
 
WEB SERVICE SOAP, JAVA, XML, JAXWS
WEB SERVICE SOAP, JAVA, XML, JAXWSWEB SERVICE SOAP, JAVA, XML, JAXWS
WEB SERVICE SOAP, JAVA, XML, JAXWS
 
Complete Java Course
Complete Java CourseComplete Java Course
Complete Java Course
 
Prometheus and Grafana
Prometheus and GrafanaPrometheus and Grafana
Prometheus and Grafana
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
Functional programming
Functional programmingFunctional programming
Functional programming
 
Formation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-dataFormation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-data
 
Hibernate jpa
Hibernate jpaHibernate jpa
Hibernate jpa
 
Spring AOP
Spring AOPSpring AOP
Spring AOP
 
Extreme Programming (XP)
Extreme Programming (XP)Extreme Programming (XP)
Extreme Programming (XP)
 
Systemes authentification
Systemes authentificationSystemes authentification
Systemes authentification
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Spring ioc
Spring iocSpring ioc
Spring ioc
 
Presentation of framework Angular
Presentation of framework AngularPresentation of framework Angular
Presentation of framework Angular
 

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

  1. Livrer rapidement deployer rapidement. C’est à dire avoir un feedback rapide de la part de client
  2. Devops c la suite d’agilité
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.