SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Pipeline & Docker
Guillaume Membré
JUG Nantes - Mai 2017
Sommaire
● Intro sur les pipelines
● La place de Docker ?
● Démo IRL
Guillaume Membré
Consultant et formateur chez Zenika Nantes
Mise en place de démarche DevOps
Développeur Java depuis 10 ans, en transition
sur du grails
Mes hobbies : DIY, Raspberry Pi, Arduino
Me suivre :
◇ @GuillaumeMembre
◇ http://www.monbook.tech
Continuous
Delivery
CD ou CD ??
Besoins couvert par les
pipelines
◇ Process de construction scripté et
◇ Orchestre les différentes étapes de build
◇ Feedback à chaque étape : Fail fast, fail often
◇ Versionné avec les sources du projet
◇ Hier, l’enchainement des jobs étaient implicites ⇒
aujourd’hui, c’est codé
Anatomie d’un pipeline
Checkout Compile Deploy IntUnit Tests
Func Tests //
Load Testing
Deploy Prod
Integration tests Deploy Q/A
Perform
Release
Ready ?
Conteneurs
● Isolation d’environnement
● Jetable
● Dé-corrèle la version de l’OS des outils de build
● Permet d’introduire des nouveaux outils sans
impacter les existants
⇒ Les utiliser comme environnement de compilation
mvn, go, gcc, node, ...
Conteneurs dans le
pipeline
Checkout Compile Deploy IntUnit Tests
Func Tests //
Load Testing
Deploy Prod
Integration tests Deploy Q/A
Perform
Release
Ready ?
Image applicative
version 1.2.3
Corrélation CI / CD
Code Build Integrate Tests Release Deploy Operate
Developpement Agile
Continuous delivery
Continuous deployment
DevOps
Continuous integration
Mise en oeuvre
Pipeline as code
● En cours de maturation (~1½ ans)
○ Renommé en Jenkins Pipeline - Janv 2016
● DSL en groovy pour définir des workflows CI/CD
● Versionné avec les sources de l’application
⇒ Jenkinsfile
● Mutualisable entre projets pour l’industrialisation
● Documentation rapidement obsolète
Jenkins 2.0
Nouveau type de job : pipeline
2 DSL
◇ Declarative pipeline
■ Structure similaire à un job freestyle
■ Adapté aux processus simples
◇ Scripted Pipeline
■ Accès au DSL complet
■ Permet de tout faire
pipeline {
agent any
tools {
maven 'Maven 3.3.9'
jdk 'jdk8'
}
stages {
stage('Build') {
steps {
sh 'mvn clean install'
}
}}
post {
success {
junit 'target/surefire-reports/**/*.xml'
}
}}
Declarative pipeline
stage('Compile') {
node('linux') {
checkout scm
def mvnHome = tool 'maven-3'
sh "${mvnHome}/bin/mvn clean install -DskipTests"
}
}
stage 'Promotion' {
timeout(time: 1, unit: 'HOURS') {
input 'Deploy to Production?'
}
}
Scripted Pipeline
Documentation
◇ Step enrichis avec des plugins
◇ Documentation disponible
■
■ https://jenkins.io/doc/pipeline/steps/ ou
Limites
◇ DSL et groovy à apprendre
◇ Nécessite une adaptation de
tous les plugins existants
◇ Plugin Chuck Norris non porté
◇ Ne se teste pas en TU
Docker
Une image par outil de build :
◇ mvn:3.3.9-jdk-7
◇ golang:1.7.5
◇ gcc:6.3.0
◇ node:7.7.2
◇ sonar
◇ ...
stage('Compile') {
node('linux') {
docker.image("mvn:3.3.9-jdk-7") {
sh "mvn clean install -DskipTests"
}
}
}
Avec des conteneurs
◇ Jenkins est lancé dans un conteneur
◇ Jenkins lance un conteneur pour faire de la compilation
◇ Question : comment lancer un conteneur à partir d’un
conteneur ?
■ Docker in Docker
■ Docker out of Docker
Inception
◇ Jenkins est lancé dans un conteneur
◇ Jenkins lance un conteneur pour faire de la compilation
◇ Question : comment lancer un conteneur à partir d’un
conteneur ?
■ Docker in Docker
■ Docker out of Docker
Docker in Docker
◇ Instancier un démon docker dans un conteneur
⇒ Besoin d’être en mode privileged
⇒ Idée suivante : partager la registry locale avec la
machine hôte
Démon Docker
Jenkins
Mvn
Démon Docker
Mvn
http://jpetazzo.github.io/2015/09/03/
do-not-use-docker-in-docker-for-ci/
“DiD” tu ne feras point
Docker out of Docker
Appeler le démon Docker de la machine hôte depuis le conteneur
Démon Docker
Jenkins Mvn
Mvn
Slave Jenkins
Plusieurs strategies de lancement :
◇ ssh sur une machine distante
◇ Jenkins Swarm plugin
◇ Conteneur Jenkins Swarm plugin
Multi branche
◇ Développement par feature ⇒ multiplication des branches
◇ Besoin d’un job / branche
◇ Copier / coller fastidieux
⇒ Nouveau type de job Multi branche pipeline
A propos de cette démo
◇ Difficultés avec Docker for Mac :
■ Mapping des users entre un conteneur et l’hôte
■ Montage des volumes
◇ Finalement : VM Debian avec Virtualbox
■ Jenkins dans un conteneur
■ Slave en ssh natif
Démo
Thanks!
Des questions?
Me suivre :
◇ @GuillaumeMembre
◇ http://www.monbook.tech

Contenu connexe

Tendances

Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinLudovic Piot
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerThibaut Marmin
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...adri1s
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?ALTER WAY
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Silicon Comté
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Jérôme Petazzoni
 
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016Alexis Ducastel
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Romain Chalumeau
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSmartnSkilled
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Fabien Arcellier
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalitéZenika
 
NightClazz Docker Découverte
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte Zenika
 
Déploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherDéploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherAnthony Sigogne
 
Varnish & blue/green deployments
Varnish & blue/green deploymentsVarnish & blue/green deployments
Varnish & blue/green deploymentsOxalide
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
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-nantesChristophe Furmaniak
 

Tendances (20)

Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
 
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
 
Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
 
Livre blanc docker
Livre blanc docker Livre blanc docker
Livre blanc docker
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ?
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
 
NightClazz Docker Découverte
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte
 
Déploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherDéploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec Rancher
 
Varnish & blue/green deployments
Varnish & blue/green deploymentsVarnish & blue/green deployments
Varnish & blue/green deployments
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
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
 

Similaire à CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?

Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
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
 
OpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureOpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureParis Container Day
 
Qt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarquéQt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarquéAlexandre LAHAYE
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Présentation du versioning avec Git
Présentation du versioning avec GitPrésentation du versioning avec Git
Présentation du versioning avec Gitmsadouni
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
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
 
Kit de Developpement Synolia
Kit de Developpement SynoliaKit de Developpement Synolia
Kit de Developpement SynoliaRachid Zarouali
 
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 devKodo Kojo
 
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...mbrechet
 
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
 
Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2
Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2
Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2Paris Monitoring
 
PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...Romain Cambien
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & KubernetesPerfect Memory
 
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Publicis Sapient Engineering
 
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 WordCamp Lyon 2015 - WordPress, Git et l'intégration continue WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
WordCamp Lyon 2015 - WordPress, Git et l'intégration continueStéphane HULARD
 

Similaire à CI, CD, pipelines, conteneurs : la cohabitation est elle possible ? (20)

Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
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
 
OpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureOpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse Faure
 
Jenkins Workflow
Jenkins WorkflowJenkins Workflow
Jenkins Workflow
 
Qt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarquéQt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarqué
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Présentation du versioning avec Git
Présentation du versioning avec GitPrésentation du versioning avec Git
Présentation du versioning avec Git
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
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
 
Kit de Developpement Synolia
Kit de Developpement SynoliaKit de Developpement Synolia
Kit de Developpement Synolia
 
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
 
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
 
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...
 
Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2
Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2
Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2
 
PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & Kubernetes
 
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
 
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 WordCamp Lyon 2015 - WordPress, Git et l'intégration continue WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 

Plus de Membré Guillaume

Devenez l’Élu et maitrisez la Matrice AWS 🦸
Devenez l’Élu et maitrisez la Matrice AWS 🦸Devenez l’Élu et maitrisez la Matrice AWS 🦸
Devenez l’Élu et maitrisez la Matrice AWS 🦸Membré Guillaume
 
⌨️ Azerty, Qwerty, peut-on faire mieux ?
⌨️ Azerty, Qwerty, peut-on faire mieux ?⌨️ Azerty, Qwerty, peut-on faire mieux ?
⌨️ Azerty, Qwerty, peut-on faire mieux ?Membré Guillaume
 
Réception d'image satellite 🛰️ avec un Raspberry
Réception d'image satellite 🛰️ avec un RaspberryRéception d'image satellite 🛰️ avec un Raspberry
Réception d'image satellite 🛰️ avec un RaspberryMembré Guillaume
 
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?Membré Guillaume
 
AWS : les 10 trucs que j’aurais aimé connaître avant de commencer
AWS : les 10 trucs que j’aurais aimé connaître avant de commencerAWS : les 10 trucs que j’aurais aimé connaître avant de commencer
AWS : les 10 trucs que j’aurais aimé connaître avant de commencerMembré Guillaume
 
La tête dans les nuages avec un Raspberry Pi
La tête dans les nuages avec un Raspberry PiLa tête dans les nuages avec un Raspberry Pi
La tête dans les nuages avec un Raspberry PiMembré Guillaume
 
Suivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry PiSuivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry PiMembré Guillaume
 
Suivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry PiSuivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry PiMembré Guillaume
 

Plus de Membré Guillaume (9)

Devenez l’Élu et maitrisez la Matrice AWS 🦸
Devenez l’Élu et maitrisez la Matrice AWS 🦸Devenez l’Élu et maitrisez la Matrice AWS 🦸
Devenez l’Élu et maitrisez la Matrice AWS 🦸
 
⌨️ Azerty, Qwerty, peut-on faire mieux ?
⌨️ Azerty, Qwerty, peut-on faire mieux ?⌨️ Azerty, Qwerty, peut-on faire mieux ?
⌨️ Azerty, Qwerty, peut-on faire mieux ?
 
Réception d'image satellite 🛰️ avec un Raspberry
Réception d'image satellite 🛰️ avec un RaspberryRéception d'image satellite 🛰️ avec un Raspberry
Réception d'image satellite 🛰️ avec un Raspberry
 
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
 
AWS : les 10 trucs que j’aurais aimé connaître avant de commencer
AWS : les 10 trucs que j’aurais aimé connaître avant de commencerAWS : les 10 trucs que j’aurais aimé connaître avant de commencer
AWS : les 10 trucs que j’aurais aimé connaître avant de commencer
 
La tête dans les nuages avec un Raspberry Pi
La tête dans les nuages avec un Raspberry PiLa tête dans les nuages avec un Raspberry Pi
La tête dans les nuages avec un Raspberry Pi
 
Suivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry PiSuivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry Pi
 
Suivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry PiSuivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry Pi
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
 

CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?

  • 1. Pipeline & Docker Guillaume Membré JUG Nantes - Mai 2017
  • 2. Sommaire ● Intro sur les pipelines ● La place de Docker ? ● Démo IRL
  • 3. Guillaume Membré Consultant et formateur chez Zenika Nantes Mise en place de démarche DevOps Développeur Java depuis 10 ans, en transition sur du grails Mes hobbies : DIY, Raspberry Pi, Arduino Me suivre : ◇ @GuillaumeMembre ◇ http://www.monbook.tech
  • 4.
  • 6. CD ou CD ??
  • 7. Besoins couvert par les pipelines ◇ Process de construction scripté et ◇ Orchestre les différentes étapes de build ◇ Feedback à chaque étape : Fail fast, fail often ◇ Versionné avec les sources du projet ◇ Hier, l’enchainement des jobs étaient implicites ⇒ aujourd’hui, c’est codé
  • 8. Anatomie d’un pipeline Checkout Compile Deploy IntUnit Tests Func Tests // Load Testing Deploy Prod Integration tests Deploy Q/A Perform Release Ready ?
  • 9. Conteneurs ● Isolation d’environnement ● Jetable ● Dé-corrèle la version de l’OS des outils de build ● Permet d’introduire des nouveaux outils sans impacter les existants ⇒ Les utiliser comme environnement de compilation mvn, go, gcc, node, ...
  • 10. Conteneurs dans le pipeline Checkout Compile Deploy IntUnit Tests Func Tests // Load Testing Deploy Prod Integration tests Deploy Q/A Perform Release Ready ? Image applicative version 1.2.3
  • 11. Corrélation CI / CD Code Build Integrate Tests Release Deploy Operate Developpement Agile Continuous delivery Continuous deployment DevOps Continuous integration
  • 13. Pipeline as code ● En cours de maturation (~1½ ans) ○ Renommé en Jenkins Pipeline - Janv 2016 ● DSL en groovy pour définir des workflows CI/CD ● Versionné avec les sources de l’application ⇒ Jenkinsfile ● Mutualisable entre projets pour l’industrialisation ● Documentation rapidement obsolète
  • 14. Jenkins 2.0 Nouveau type de job : pipeline
  • 15. 2 DSL ◇ Declarative pipeline ■ Structure similaire à un job freestyle ■ Adapté aux processus simples ◇ Scripted Pipeline ■ Accès au DSL complet ■ Permet de tout faire
  • 16. pipeline { agent any tools { maven 'Maven 3.3.9' jdk 'jdk8' } stages { stage('Build') { steps { sh 'mvn clean install' } }} post { success { junit 'target/surefire-reports/**/*.xml' } }} Declarative pipeline
  • 17. stage('Compile') { node('linux') { checkout scm def mvnHome = tool 'maven-3' sh "${mvnHome}/bin/mvn clean install -DskipTests" } } stage 'Promotion' { timeout(time: 1, unit: 'HOURS') { input 'Deploy to Production?' } } Scripted Pipeline
  • 18. Documentation ◇ Step enrichis avec des plugins ◇ Documentation disponible ■ ■ https://jenkins.io/doc/pipeline/steps/ ou
  • 19. Limites ◇ DSL et groovy à apprendre ◇ Nécessite une adaptation de tous les plugins existants ◇ Plugin Chuck Norris non porté ◇ Ne se teste pas en TU
  • 20. Docker Une image par outil de build : ◇ mvn:3.3.9-jdk-7 ◇ golang:1.7.5 ◇ gcc:6.3.0 ◇ node:7.7.2 ◇ sonar ◇ ...
  • 21. stage('Compile') { node('linux') { docker.image("mvn:3.3.9-jdk-7") { sh "mvn clean install -DskipTests" } } } Avec des conteneurs
  • 22. ◇ Jenkins est lancé dans un conteneur ◇ Jenkins lance un conteneur pour faire de la compilation ◇ Question : comment lancer un conteneur à partir d’un conteneur ? ■ Docker in Docker ■ Docker out of Docker Inception ◇ Jenkins est lancé dans un conteneur ◇ Jenkins lance un conteneur pour faire de la compilation ◇ Question : comment lancer un conteneur à partir d’un conteneur ? ■ Docker in Docker ■ Docker out of Docker
  • 23. Docker in Docker ◇ Instancier un démon docker dans un conteneur ⇒ Besoin d’être en mode privileged ⇒ Idée suivante : partager la registry locale avec la machine hôte Démon Docker Jenkins Mvn Démon Docker Mvn
  • 25. Docker out of Docker Appeler le démon Docker de la machine hôte depuis le conteneur Démon Docker Jenkins Mvn Mvn
  • 26. Slave Jenkins Plusieurs strategies de lancement : ◇ ssh sur une machine distante ◇ Jenkins Swarm plugin ◇ Conteneur Jenkins Swarm plugin
  • 27. Multi branche ◇ Développement par feature ⇒ multiplication des branches ◇ Besoin d’un job / branche ◇ Copier / coller fastidieux ⇒ Nouveau type de job Multi branche pipeline
  • 28.
  • 29. A propos de cette démo ◇ Difficultés avec Docker for Mac : ■ Mapping des users entre un conteneur et l’hôte ■ Montage des volumes ◇ Finalement : VM Debian avec Virtualbox ■ Jenkins dans un conteneur ■ Slave en ssh natif
  • 30. Démo
  • 31. Thanks! Des questions? Me suivre : ◇ @GuillaumeMembre ◇ http://www.monbook.tech