SlideShare una empresa de Scribd logo
1 de 63
Descargar para leer sin conexión
JENKINS WORKFLOW
15 DÉCEMBRE 2015
JEAN DETOEUF
CONCEPTEUR-DÉVELOPPEUR
Passionné de nouvelles technologies
#jvm #docker #craftmanship #rpi #diy
SONDAGE
Intégration continue
Livraison continue
Déploiement continu
INTÉGRATION CONTINUE
JENKINS
Jenkins Workflow
Jenkins Workflow
Jenkins Workflow
Jenkins Workflow
ET BEAUCOUP D'AUTRES
POURQUOI JENKINS ?
CI le plus utilisé
Extensible
Stable
Open Source
Communauté
Livraisons régulières
Vieillissant par rapport à la concurrence ?
JOBS CLASSIQUES
COMMENT ENCHAÎNER
DU BUILD AU DEPLOY ?
Histoire de faire du déploiement continu
EN CHAÎNANT LES
JOBS
OUI, MAIS POUR
SUIVRE
L'ENCHAÎNEMENT ?
PIPELINE PLUGIN !
PROBLÈME
Complexe à mettre en oeuvre
On finit par avoir des jobs "étapes"
File d'exécution impossible à lire
Un job a des successeurs prédéterminés
Le paramétrage se fait dans Jenkins
Solution peu utilisable pour du déploiement continu
DÉPLOIEMENT CONTINU
Le but du déploiement continu est d'avoir une application
stable en production.
La chaine de livraison doit être automatisée au maximum
pour réduire l'intervention humaine entre une modification
de code et sa livraison en production.
L'erreur est humaine
QUEL INTERVALE DE TEMPS ENTRE
DEUX MEP ?
Ce n'est pas le but premier du déploiement continu.
Pouvoir livrer rapidement ne veut pas dire livrer
régulièrement.
GO DELIVERY
Un build est composé d'étapes
Chaque build peut être appliqué à un environnement
Fan-out-in (parallelisation des étapes)
GO DELIVERY
BONNES IDÉES
Parallèlisation des étapes
Environnements de déploiement
Visualisation du build et de l'étape en cours
Possibilité d'avoir plusieurs repositories en entrée
PROBLÈMES
Configuration gérée dans l'outil
Pas de possibilité de scripter le job
Difficulté pour gérer plusieurs versions nécessitant des
jobs différents
JENKINS WORKFLOW
PLUGIN
PLUGIN(S)
Ajout à une installation existante
Nouveau type de job
SCRIPTER LE JOB
ET METTRE LE SCRIPT AVEC LES
SOURCES
PIPELINE AS CODE !
SCRIPT STANDARD
Ecrit en shell
S'exécute sur un noeud (maître ou esclave)
JENKINSFILE
Fichier de build en Groovy
Du build au deploy dans un fichier compréhensible
Permet une orchestration plus avancée
Convention de nommage : Jenkinsfile
node {
git url: 'https://github.com/spring-projects/spring-petclinic.git'
def mvnHome = tool 'M3'
sh "${mvnHome}/bin/mvn -B verify"
}
JENKINSFILE
Le base de code déclare elle-même comment s'installer
Différentes versions (tags/branches/commits) peuvent
avoir des manières différentes de s'installer
node {
git url: 'https://github.com/spring-projects/spring-petclinic.git'
def mvnHome = tool 'M3'
sh "${mvnHome}/bin/mvn -B verify"
}
ACTIONS FOURNIES
PAR WORKFLOW
COMMANDE SHELL
sh 'ls /tmp'
bat 'dir C:tmp'
Pour reprendre un script standard, il suffit de reprendre
toutes les lignes du script comme ceci
ECHO (PRINT)
echo 'Compilation'
TRY-CATCH-FINALLY
try {
checkpoint('Before production')
} catch (NoSuchMethodError _) {
echo 'Checkpoint feature available in CloudBees Jenkins Enterprise.'
}
FOR-LOOPS
files.each{ file ->
sh "check.sh $file"
}
for num in 1..10
sh "echo $num"
}
OUTILS
def mvn(args) {
sh "${tool 'Maven 3.x'}/bin/mvn ${args}"
}
mvn 'clean install'
VALIDATION HUMAINE
input 'Est-ce que la page ${url} est correcte ?'
Si cette validation intervient avant le déploiement, on fait de
la livraison continue
CHOIX DU NOEUD
D'EXÉCUTION
node('unix && 64bit') {
sh 'make install'
}
PARAMÈTRES
EXPOSÉES SOUS FORME DE
VARIABLES D'ENVIRONNEMENT
Shell
$VAR
Groovy
env.VAR
PARALLÈLISATION
PARALLEL
for (int i = 0; i < splits.size(); i++) {
branches["split${i}"] = {
node('remote') {
sh 'rm -rf *'
sh "${tool 'M3'}/bin/mvn -B -Dmaven.test.failure.ignore test"
}
}
}
parallel branches
parallel prend une map en paramètre
la clé représente le nom de la branche
la valeur correspond au bloc de code à exécuter
PARALLEL
STAGE
Permet de séparer le phases du job
Permet de limiter le nombre d'exécutions parallèles
stage 'build'
sh "${tool 'M3'}/bin/mvn clean install"
stage concurrency: 1, name: 'deploy'
sh 'mv target/app.war /tmp/webapps/'
STAGE
stage 'build'
sh "${tool 'M3'}/bin/mvn clean install"
stage name: 'deploy', concurrency: 1
sh 'mv target/app.war /tmp'
Tant que le stage deploy n'est pas terminé, les exécutions
suivantes s'arrêtent avant deploy
Si plusieurs exécutions sont en attente de deploy, c'est la
dernière qui est retenue.
STAGE
CHARGEMENT D'UN FICHIER DE
SCRIPT
node{
def install = load 'install.groovy'
install.main()
}
Permet de diviser le script de build en plusieurs parties
SUIVI À L'IHM : OPEN SOURCE
Liens pour afficher les logs de chaque étape
SUIVI À L'IHM : CLOUDBEES EDITION
LONGUE INSTALLATION
Les builds de Workflow survivent à un redémarrage de
Jenkins
Le thread d'orchestration ne s'exécute que pour lancer la
prochaine tache
RÉSUMÉ
Une orchestration intégrée à la base de code
Un langage expressif (DSL workflow et Groovy)
Parallèlisation et distribution des tâches
Pipeline de déploiement continu
EST-CE QU'ON A LE TEMPS POUR
UNE DÉMO ?
MULTIBRANCH
Jenkins a uniquement besoin de connaître l'URL du
repository
MULTIBRANCH
Pour chaque branche à la racine de ce repository doit se
trouver le fichier Jenkinsfile
Les branches sont scrutées régulièrement et mises à jour et
lancées
On peut utiliser un hook pour lancer les builds
JENKINS SLAVES
Besoin d'installer des outils
Le bon JDK, la version de Maven qu'il me faut, gradle ? sbt ?
compilateur ?
DOCKER TO THE RESCUE !
Docker est la solution à tout de toutes manières
WORKFLOW DANS UNE IMAGE
DOCKER
docker.image('maven:3.3.3-jdk-8').inside {
sh 'mvn -B clean install'
}
Le répertoire courant dans docker est le workspace Jenkins
Montage du workspace dans un volume docker
Plus de problèmes d'outils, mis à part Docker qui doit être
installé sur les slaves
Le container est supprimé après son exécution
FAIRE DES IMAGES DOCKER DANS
JENKINS
DOCKER BUILD
node {
git scm // Récupérer le repository git en mode multibranch
def myEnv = docker.build 'my-environment:snapshot'
myEnv.push()
}
DOCKER BUILD
node {
git scm // Récupérer le repository git en mode multibranch
def myEnv = docker.build "my-environment:${env.BUILD_TAG}"
myEnv.push()
}
Utilisation du tag git pour pousser dans le registry
DOCKER POUR TESTER
node {
git scm
docker.image('mysql').withRun('-p 81:3126') {c ->
sh './test-with-local-db'
}
}
On veut exécuter le corps du withRun alors que l'image
mysql tourne
Le withRun prend optionnellement les paramètres du
docker run
Adapté aux tests d'intégration
DOCKER REGISTRY
node {
docker.withRegistry('https://docker.mycorp.com/', 'docker-login'){
git scm
docker.build('myapp').push('latest')
}
}
Possibilité d'utiliser un registry privé
On passe des credentials enregistrés dans Jenkins
DOCKER SERVER
docker.withServer('tcp://swarm.mycorp.com:2376', 'swarm-certs'){
docker.image('httpd').withRun('-p 8080:80') {c ->
sh "curl -i http://${hostIp(c)}:8080/"
}
}
def hostIp(container) {
sh "docker inspect -f {{.Node.Ip}} ${container.id} > hostIp"
readFile('hostIp').trim()
}
Possibilité de déléguer à un serveur docker (swarm ou autre)
Le client docker doit être installé
A utiliser si le slave ne peut pas supporter l'application à
tester
QUESTIONS ?
MERCI POUR VOTRE ÉCOUTE
Cette présentation :
@thebignet
thebignet
thebignet
talk-jenkins-workflow

Más contenido relacionado

La actualidad más candente

Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Amélie DUVERNET
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tousAurelien Navarre
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transcolaurent_opnworks
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatiséJérémie Campari
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsOCTO Technology
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielleDavid Buros
 
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/HudsonSonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudsonxmacina
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsRossi Oddet
 
Intégration continue
Intégration continueIntégration continue
Intégration continueKlee Group
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureJonathan Bonzy
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?Fou Cha
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidThibaud CAVIN
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?rfelden
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
 
Principes de L'intégration Continue
Principes de L'intégration ContinuePrincipes de L'intégration Continue
Principes de L'intégration ContinueXavier Warzee
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetOlivier BAZOUD
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?Membré Guillaume
 
TDD for DevOps with Chef
TDD for DevOps with ChefTDD for DevOps with Chef
TDD for DevOps with ChefOlivier BAZOUD
 
DevOps - from idea to production
DevOps - from idea to productionDevOps - from idea to production
DevOps - from idea to productionHabib MAALEM
 

La actualidad más candente (20)

Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatisé
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielle
 
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/HudsonSonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec Jenkins
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & Android
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
Principes de L'intégration Continue
Principes de L'intégration ContinuePrincipes de L'intégration Continue
Principes de L'intégration Continue
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - Puppet
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
 
TDD for DevOps with Chef
TDD for DevOps with ChefTDD for DevOps with Chef
TDD for DevOps with Chef
 
DevOps - from idea to production
DevOps - from idea to productionDevOps - from idea to production
DevOps - from idea to production
 

Destacado

Fastlane et livraison continue sous iOS
Fastlane et livraison continue sous iOSFastlane et livraison continue sous iOS
Fastlane et livraison continue sous iOSxrb
 
Custom deployments with sbt-native-packager
Custom deployments with sbt-native-packagerCustom deployments with sbt-native-packager
Custom deployments with sbt-native-packagerGaryCoady
 
Unsucking Error Handling with Futures
Unsucking Error Handling with FuturesUnsucking Error Handling with Futures
Unsucking Error Handling with FuturesGaryCoady
 
Ship your Scala code often and easy with Docker
Ship your Scala code often and easy with DockerShip your Scala code often and easy with Docker
Ship your Scala code often and easy with DockerMarcus Lönnberg
 
Continous delivery - lad koden flyde 2014
Continous delivery - lad koden flyde 2014Continous delivery - lad koden flyde 2014
Continous delivery - lad koden flyde 2014BestBrains
 
Continous delivery with sbt
Continous delivery with sbtContinous delivery with sbt
Continous delivery with sbtWojciech Pituła
 
Automated Performance Testing With J Meter And Maven
Automated  Performance  Testing With  J Meter And  MavenAutomated  Performance  Testing With  J Meter And  Maven
Automated Performance Testing With J Meter And MavenPerconaPerformance
 
Scala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouScala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouJ On The Beach
 
Akka Http , Routes, Streams with Scala
Akka Http , Routes, Streams with ScalaAkka Http , Routes, Streams with Scala
Akka Http , Routes, Streams with ScalaJerry Kuru
 
Using Jenkins and Jmeter to build a scalable Load Testing solution
Using Jenkins and Jmeter to build a scalable Load Testing solutionUsing Jenkins and Jmeter to build a scalable Load Testing solution
Using Jenkins and Jmeter to build a scalable Load Testing solutionRuslan Strazhnyk
 
Performance Testing With Jmeter
Performance Testing With JmeterPerformance Testing With Jmeter
Performance Testing With JmeterAdam Goucher
 
An Introduction to Akka http
An Introduction to Akka httpAn Introduction to Akka http
An Introduction to Akka httpKnoldus Inc.
 
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPSecuring Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPRafal Gancarz
 
Building scalable rest service using Akka HTTP
Building scalable rest service using Akka HTTPBuilding scalable rest service using Akka HTTP
Building scalable rest service using Akka HTTPdatamantra
 
Building a Reactive RESTful API with Akka Http & Slick
Building a Reactive RESTful API with Akka Http & SlickBuilding a Reactive RESTful API with Akka Http & Slick
Building a Reactive RESTful API with Akka Http & SlickZalando Technology
 
Spring Boot Microservices vs Akka Actor Cluster
Spring Boot Microservices vs Akka Actor Cluster Spring Boot Microservices vs Akka Actor Cluster
Spring Boot Microservices vs Akka Actor Cluster OpenCredo
 
Jmeter Performance Testing
Jmeter Performance TestingJmeter Performance Testing
Jmeter Performance TestingAtul Pant
 
Functional programming in Scala
Functional programming in ScalaFunctional programming in Scala
Functional programming in Scaladatamantra
 

Destacado (20)

Fastlane et livraison continue sous iOS
Fastlane et livraison continue sous iOSFastlane et livraison continue sous iOS
Fastlane et livraison continue sous iOS
 
Custom deployments with sbt-native-packager
Custom deployments with sbt-native-packagerCustom deployments with sbt-native-packager
Custom deployments with sbt-native-packager
 
Unsucking Error Handling with Futures
Unsucking Error Handling with FuturesUnsucking Error Handling with Futures
Unsucking Error Handling with Futures
 
Ship your Scala code often and easy with Docker
Ship your Scala code often and easy with DockerShip your Scala code often and easy with Docker
Ship your Scala code often and easy with Docker
 
Continous delivery - lad koden flyde 2014
Continous delivery - lad koden flyde 2014Continous delivery - lad koden flyde 2014
Continous delivery - lad koden flyde 2014
 
Continous delivery with sbt
Continous delivery with sbtContinous delivery with sbt
Continous delivery with sbt
 
Automated Performance Testing With J Meter And Maven
Automated  Performance  Testing With  J Meter And  MavenAutomated  Performance  Testing With  J Meter And  Maven
Automated Performance Testing With J Meter And Maven
 
Scala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouScala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camou
 
Akka Http , Routes, Streams with Scala
Akka Http , Routes, Streams with ScalaAkka Http , Routes, Streams with Scala
Akka Http , Routes, Streams with Scala
 
Using Jenkins and Jmeter to build a scalable Load Testing solution
Using Jenkins and Jmeter to build a scalable Load Testing solutionUsing Jenkins and Jmeter to build a scalable Load Testing solution
Using Jenkins and Jmeter to build a scalable Load Testing solution
 
Performance Testing With Jmeter
Performance Testing With JmeterPerformance Testing With Jmeter
Performance Testing With Jmeter
 
Akka http 2
Akka http 2Akka http 2
Akka http 2
 
An Introduction to Akka http
An Introduction to Akka httpAn Introduction to Akka http
An Introduction to Akka http
 
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPSecuring Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTP
 
Building scalable rest service using Akka HTTP
Building scalable rest service using Akka HTTPBuilding scalable rest service using Akka HTTP
Building scalable rest service using Akka HTTP
 
Building a Reactive RESTful API with Akka Http & Slick
Building a Reactive RESTful API with Akka Http & SlickBuilding a Reactive RESTful API with Akka Http & Slick
Building a Reactive RESTful API with Akka Http & Slick
 
Spring Boot Microservices vs Akka Actor Cluster
Spring Boot Microservices vs Akka Actor Cluster Spring Boot Microservices vs Akka Actor Cluster
Spring Boot Microservices vs Akka Actor Cluster
 
Jmeter Performance Testing
Jmeter Performance TestingJmeter Performance Testing
Jmeter Performance Testing
 
Functional programming in Scala
Functional programming in ScalaFunctional programming in Scala
Functional programming in Scala
 
Node.js vs Play Framework
Node.js vs Play FrameworkNode.js vs Play Framework
Node.js vs Play Framework
 

Similar a Jenkins Workflow

Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueVincent Composieux
 
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
 
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vieJean-Philippe Briend
 
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
[Codeur en seine] Les Pipelines Jenkins dans la vraie vieJean-Philippe Briend
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsBuild automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsCocoaHeads France
 
Realworld cd pipelines
Realworld cd pipelines Realworld cd pipelines
Realworld cd pipelines TREEPTIK
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
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
 
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
 
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
 
Intégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsIntégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsKokou Gaglo
 
CI-Jenkins.pptx
CI-Jenkins.pptxCI-Jenkins.pptx
CI-Jenkins.pptxMEDOBEST1
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natifHenri Gomez
 
Livraison continue avec Drupal 7
Livraison continue avec Drupal 7Livraison continue avec Drupal 7
Livraison continue avec Drupal 7Arnaud Huon
 
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
 
Comment remplacer cygwin par docker
Comment remplacer cygwin par dockerComment remplacer cygwin par docker
Comment remplacer cygwin par dockerNicolas Trauwaen
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerThe Incredible Automation Day
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxAnisSalhi3
 
Laissez tomber vos Dockerfile, adoptez un Buildpack !
Laissez tomber vos Dockerfile, adoptez un Buildpack !Laissez tomber vos Dockerfile, adoptez un Buildpack !
Laissez tomber vos Dockerfile, adoptez un Buildpack !Julien Wittouck
 

Similar a Jenkins Workflow (20)

Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
 
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
 
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
 
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsBuild automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
 
Realworld cd pipelines
Realworld cd pipelines Realworld cd pipelines
Realworld cd pipelines
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
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
 
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
 
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
 
Intégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsIntégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec Jenkins
 
CI-Jenkins.pptx
CI-Jenkins.pptxCI-Jenkins.pptx
CI-Jenkins.pptx
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
 
Livraison continue avec Drupal 7
Livraison continue avec Drupal 7Livraison continue avec Drupal 7
Livraison continue avec Drupal 7
 
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
 
Comment remplacer cygwin par docker
Comment remplacer cygwin par dockerComment remplacer cygwin par docker
Comment remplacer cygwin par docker
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp Docker
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
 
Laissez tomber vos Dockerfile, adoptez un Buildpack !
Laissez tomber vos Dockerfile, adoptez un Buildpack !Laissez tomber vos Dockerfile, adoptez un Buildpack !
Laissez tomber vos Dockerfile, adoptez un Buildpack !
 

Jenkins Workflow