Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)

CloudBees
CloudBeesCloudBees
Pimp your Continuous Delivery Pipeline 
with Jenkins workflow 
Cyrille Le Clerc, CloudBees 
©2014 CloudBees, Inc. All Rights Reserved
©2014 CloudBees, Inc. All Rights Reserved 
About Me 
@cyrilleleclerc 
Cyrille Le Clerc 
Open 
Source 
CTO 
Product 
Management 
DevOps, 
Infra 
as 
Code, 
Con9nuous 
Delivery
©2014 CloudBees, Inc. All Rights Reserved 
About you 
Jenkins? CI? CD? Code Jenkins plugin?
©2014 CloudBees, Inc. All Rights Reserved 
Agenda 
• Con9nuous 
Delivery 
• Jenkins 
& 
Con9nuous 
Delivery 
• Workflows 
in 
Jenkins 
today 
• The 
new 
Jenkins 
Workflow 
Engine 
• Jenkins 
Workflow 
Syntax 
Card 
• Possible 
future
Continuous Delivery 
©2014 CloudBees, Inc. All Rights Reserved
Continuous Delivery 
©2014 CloudBees, Inc. All Rights Reserved 
• “Reliable 
So+ware 
Releases 
through 
Build, 
Test, 
and 
Deployment 
Automa=on” 
• DONE 
= 
Shippable 
into 
Produc9on
Continuous Integration Steps 
©2014 CloudBees, Inc. All Rights Reserved 
Con$nuous 
Integra$on 
Source Code 
Quality Analysis 
Compile & 
Unit Tests 
Binaries
Continuous Delivery Steps 
QA 
©2014 CloudBees, Inc. All Rights Reserved 
Con$nuous 
Delivery 
DEV 
DEV 
OPS 
Source Code 
Quality Analysis 
Compile & 
Unit Tests 
Binaries 
Perfs Environment 
Func Test Environment 
UAT Environment 
Production Environment 
GO LIVE! 
Release! 
Staging Environment
Continuous Delivery Pipeline 
©2014 CloudBees, Inc. All Rights Reserved 
Continuous Delivery Pipeline 
Compile & 
Unit Tests 
Perfs Tests 
Selenium Tests Deploy UAT 
Sonar Analysis 
Deploy Staging Deploy Production
Jenkins: Hub of Continuous Delivery 
©2014 CloudBees, Inc. All Rights Reserved 
• Connect 
the 
dots 
• It 
is 
the 
process 
Source Code 
Perfs Environment 
Func Test Environment 
UAT Environment 
Binaries 
Quality Analysis 
Compile & 
Unit Tests
CD Pipeline è Workflow 
©2014 CloudBees, Inc. All Rights Reserved 
Continuous Delivery Pipeline 
Compile & 
Unit Tests 
Perfs Tests 
Selenium Tests Deploy UAT 
Sonar Analysis 
Deploy Staging Deploy Production
©2014 CloudBees, Inc. All Rights Reserved 
What we need 
• Complex 
pipelines 
involving 
mul9ple 
stages 
• Non-­‐sequen$al 
logic 
such 
as 
loops, 
forks 
… 
• Long-­‐running 
builds 
must 
survive 
outages 
• Interac$ons 
with 
humans 
including 
pauses, 
input 
• Restartable 
builds 
in 
case 
of 
transient 
errors 
• Reusable 
defini$ons 
to 
avoid 
duplica9on 
• Comprehensible 
scripts 
with 
one 
clear 
defini9on
Workflow until today 
©2014 CloudBees, Inc. All Rights Reserved 
• Job 
chaining 
• Build 
Flow 
Plugin 
• Build 
Pipeline 
Plugin 
• Build 
Delivery 
Pipeline
Workflow until today 
• Many 
atomic 
jobs 
©2014 CloudBees, Inc. All Rights Reserved 
• Hard 
to 
share 
variables/state 
between 
jobs 
• Limited 
logic 
• Mix 
build 
triggers, 
parameterized 
build 
…
Build Flow Plugin 
• Did 
have 
scriptability 
and 
extensibility 
©2014 CloudBees, Inc. All Rights Reserved 
• Did 
not 
address 
configura9on 
“sprawl” 
• Disjointed 
view 
of 
what 
really 
ran 
• No 
ability 
to 
survive 
restarts 
• Almost 
good 
enough 
but 
could 
not 
go 
further
Jenkins Workflow Engine 
©2014 CloudBees, Inc. All Rights Reserved
Simplifying our sample workflow 
©2014 CloudBees, Inc. All Rights Reserved 
Compile & 
Unit Tests 
Perfs Tests 
Selenium Tests Deploy UAT 
Sonar Analysis 
Deploy Staging Deploy Production
Simplifying our sample workflow 
©2014 CloudBees, Inc. All Rights Reserved 
Compile & 
Unit Tests 
Perfs Tests 
Selenium Tests Deploy UAT 
Sonar Analysis 
Deploy Staging Deploy Production
©2014 CloudBees, Inc. All Rights Reserved 
What we need 
• Complex 
pipelines 
involving 
mul9ple 
stages 
• Non-­‐sequen$al 
logic 
such 
as 
loops, 
forks 
… 
• Long-­‐running 
builds 
must 
survive 
outages 
• Interac$ons 
with 
humans 
including 
pauses, 
input 
• Restartable 
builds 
in 
case 
of 
transient 
errors 
• Reusable 
defini$ons 
to 
avoid 
duplica9on 
• Comprehensible 
scripts 
with 
one 
clear 
defini9on
New Workflow Syntax 
©2014 CloudBees, Inc. All Rights Reserved
©2014 CloudBees, Inc. All Rights Reserved 
Key features 
• En9re 
flow 
is 
one 
concise 
Groovy 
script 
– For 
loops, 
try-­‐finally, 
fork-­‐join 
… 
• Can 
restart 
Jenkins 
while 
flow 
is 
running 
• Allocate 
slave 
nodes 
and 
workspaces 
– As 
many 
as 
you 
want, 
when 
you 
want 
• Stages 
throYle 
concurrency 
of 
builds 
• Human 
input/approval 
integrated 
into 
flow 
• Standard 
project 
concepts: 
SCM, 
ar9facts, 
plugins
Groovy DSL vs. Graphical Workflow 
• Familiar 
control 
flow 
construc9on 
©2014 CloudBees, Inc. All Rights Reserved 
• Familiar 
“tools” 
for 
building 
abstrac9ons 
Func9ons, 
classes, 
variables, 
… 
• Workflow 
in 
version 
control 
• As 
opposed 
to: 
Graphical 
workflow 
designer
©2014 CloudBees, Inc. All Rights Reserved 
Project setup 
• One 
workflow 
is 
defined 
as 
a 
job 
• Single 
script 
for 
all 
steps 
• Build 
triggers 
& 
parameters 
like 
regular 
projects 
• Each 
workflow 
execu9on 
is 
a 
regular 
Jenkins 
build 
displayed 
in 
regular 
Jenkins 
views 
• Graphical 
visualiza9on 
of 
actual 
build 
possible 
Not 
of 
visualiza9on 
job 
defini9on 
but 
of 
build 
execu9on
Non-sequential logic 
try {} catch {} 
©2014 CloudBees, Inc. All Rights Reserved
Interaction with humans 
©2014 CloudBees, Inc. All Rights Reserved
Restartable build / checkpoint 
©2014 CloudBees, Inc. All Rights Reserved
©2014 CloudBees, Inc. All Rights Reserved 
Visualization
©2014 CloudBees, Inc. All Rights Reserved 
Stages 
• Semaphore 
• Visualiza9on
Comprehensible scripts 
©2014 CloudBees, Inc. All Rights Reserved
©2014 CloudBees, Inc. All Rights Reserved 
Demo time!
Workflow Syntax Card 
©2014 CloudBees, Inc. All Rights Reserved
Workflow Syntax Card 
• stage: 
Enter 
a 
new 
stage 
©2014 CloudBees, Inc. All Rights Reserved 
• node: 
Allocate 
node 
• ws: 
Allocate 
workspace 
• parallel: 
Execute 
sub-­‐workflow 
in 
parallel 
• retry: 
Retry 
the 
body 
up 
to 
N 
9mes 
• catchError: 
Catch 
error 
and 
con9nue 
• input: 
Input 
/ 
human 
interac9on 
• load: 
Evaluate 
a 
Groovy 
source 
file 
into 
the 
workflow 
script
Workflow Syntax Card 
• step: 
General 
build 
step 
©2014 CloudBees, Inc. All Rights Reserved 
• sh: 
Shell 
script 
• bat: 
Windows 
batch 
script
Workflow Syntax Card 
• archive: 
Archive 
ar9facts 
©2014 CloudBees, Inc. All Rights Reserved 
• unarchive: 
Copy 
archived 
ar9fact 
into 
the 
workspace 
• echo: 
Print 
message 
• dir: 
Change 
directory 
• readFile: 
Read 
file 
from 
workspace 
• writeFile: 
Write 
file 
to 
workspace
Workflow Syntax Card 
• git: 
©2014 CloudBees, Inc. All Rights Reserved 
Git 
• svn: 
Subversion 
• scm: 
General 
SCM 
• tool: 
install 
a 
tool 
• build: 
Build 
a 
job
Workflow Syntax Card 
• checkpoint: 
capture 
the 
state 
of 
the 
execu9on 
so 
that 
it 
can 
be 
restarted 
later 
©2014 CloudBees, Inc. All Rights Reserved
Possible Future 
©2014 CloudBees, Inc. All Rights Reserved
Possible Future: probably OSS 
• More 
plugin 
interoperability 
©2014 CloudBees, Inc. All Rights Reserved 
• Mul9-­‐branch 
project 
(& 
SCM 
API) 
integra9on 
• More 
advanced 
SCM 
• In-­‐IDE 
edi9ng 
support 
• Concise 
syntax
Possible Future: probably Jenkins Enterprise 
• More 
visualiza9ons 
©2014 CloudBees, Inc. All Rights Reserved 
• Validated 
merge 
integra9on 
• Deployment, 
incl. 
blue/green 
with 
rollback 
• Freestyle 
and/or 
Build 
Flow 
import 
• Templates 
integra9on
Get the code 
• hYps://gist.github.com/cyrille-­‐leclerc/ 
796085e19d9cec4a71ef 
– workflow.groovy 
©2014 CloudBees, Inc. All Rights Reserved
©2014 CloudBees, Inc. All Rights Reserved
1 of 41

Recommended

Introduction to DevOps by
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOpsRavindu Fernando
1.2K views26 slides
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train... by
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...Simplilearn
2.3K views106 slides
Introduction to devops by
Introduction to devopsIntroduction to devops
Introduction to devopsUtpalenduChakrobortt1
766 views17 slides
An introduction to DevOps by
An introduction to DevOpsAn introduction to DevOps
An introduction to DevOpsAlexander Meijers
1.7K views18 slides
DevOps overview 2019-04-13 Nelkinda April Meetup by
DevOps overview  2019-04-13 Nelkinda April MeetupDevOps overview  2019-04-13 Nelkinda April Meetup
DevOps overview 2019-04-13 Nelkinda April MeetupShweta Sadawarte
660 views34 slides

More Related Content

What's hot

Introduction to DevOps by
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOpsHawkman Academy
6.5K views73 slides
DevOps by
DevOps DevOps
DevOps Hakan Yüksel
1.1K views6 slides
DevOps introduction by
DevOps introductionDevOps introduction
DevOps introductionMettje Heegstra
1.6K views177 slides
CI/CD Overview by
CI/CD OverviewCI/CD Overview
CI/CD OverviewAn Nguyen
3.5K views21 slides
DevOps introduction by
DevOps introductionDevOps introduction
DevOps introductionChristian F. Nissen
8K views83 slides
DevOps Monitoring and Alerting by
DevOps Monitoring and AlertingDevOps Monitoring and Alerting
DevOps Monitoring and AlertingKhairul Zebua
370 views43 slides

What's hot(20)

CI/CD Overview by An Nguyen
CI/CD OverviewCI/CD Overview
CI/CD Overview
An Nguyen3.5K views
DevOps Monitoring and Alerting by Khairul Zebua
DevOps Monitoring and AlertingDevOps Monitoring and Alerting
DevOps Monitoring and Alerting
Khairul Zebua370 views
DevOps - Overview - One of the Top Trends in IT Industry by Rahul Tilloo
DevOps - Overview - One of the Top Trends in IT IndustryDevOps - Overview - One of the Top Trends in IT Industry
DevOps - Overview - One of the Top Trends in IT Industry
Rahul Tilloo677 views
Roles and Responsibilities of a DevOps Engineer by ZaranTech LLC
Roles and Responsibilities of a DevOps EngineerRoles and Responsibilities of a DevOps Engineer
Roles and Responsibilities of a DevOps Engineer
ZaranTech LLC809 views
CI:CD in Lightspeed with kubernetes and argo cd by Billy Yuen
CI:CD in Lightspeed with kubernetes and argo cdCI:CD in Lightspeed with kubernetes and argo cd
CI:CD in Lightspeed with kubernetes and argo cd
Billy Yuen1.6K views
CI/CD Best Practices for Your DevOps Journey by DevOps.com
CI/CD Best  Practices for Your DevOps JourneyCI/CD Best  Practices for Your DevOps Journey
CI/CD Best Practices for Your DevOps Journey
DevOps.com2.1K views
DevOps Introduction by Robert Sell
DevOps IntroductionDevOps Introduction
DevOps Introduction
Robert Sell3.8K views
Understanding Kubernetes by Tu Pham
Understanding KubernetesUnderstanding Kubernetes
Understanding Kubernetes
Tu Pham1.9K views
What Is DevOps? by Soumya De
What Is DevOps?What Is DevOps?
What Is DevOps?
Soumya De2.5K views
Transforming Organizations with CI/CD by Cprime
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CD
Cprime11.1K views
Using Docker for Testing by Mukta Aphale
Using Docker for TestingUsing Docker for Testing
Using Docker for Testing
Mukta Aphale2K views
What Is DevOps? | Introduction To DevOps | DevOps Tools | DevOps Tutorial | D... by Edureka!
What Is DevOps? | Introduction To DevOps | DevOps Tools | DevOps Tutorial | D...What Is DevOps? | Introduction To DevOps | DevOps Tools | DevOps Tutorial | D...
What Is DevOps? | Introduction To DevOps | DevOps Tools | DevOps Tutorial | D...
Edureka!2.9K views
La práctica en el Desarrollo de Software: Una visión general! by Cristian Sánchez
La práctica en el Desarrollo de Software: Una visión general!La práctica en el Desarrollo de Software: Una visión general!
La práctica en el Desarrollo de Software: Una visión general!
Cristian Sánchez2.5K views

Viewers also liked

Continuous Delivery with Jenkins Workflow by
Continuous Delivery with Jenkins WorkflowContinuous Delivery with Jenkins Workflow
Continuous Delivery with Jenkins WorkflowUdaypal Aarkoti
4.2K views9 slides
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor... by
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Docker, Inc.
33K views44 slides
Continuous Integration/Deployment with Docker and Jenkins by
Continuous Integration/Deployment with Docker and JenkinsContinuous Integration/Deployment with Docker and Jenkins
Continuous Integration/Deployment with Docker and JenkinsFrancesco Bruni
4.6K views33 slides
CI and CD with Jenkins by
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with JenkinsMartin Málek
93.4K views11 slides
Deployment Automation with Docker by
Deployment Automation with DockerDeployment Automation with Docker
Deployment Automation with DockerEgor Pushkin
2.3K views22 slides
Jenkins - From Continuous Integration to Continuous Delivery by
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryVirendra Bhalothia
21.2K views15 slides

Viewers also liked(20)

Continuous Delivery with Jenkins Workflow by Udaypal Aarkoti
Continuous Delivery with Jenkins WorkflowContinuous Delivery with Jenkins Workflow
Continuous Delivery with Jenkins Workflow
Udaypal Aarkoti4.2K views
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor... by Docker, Inc.
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Docker, Inc.33K views
Continuous Integration/Deployment with Docker and Jenkins by Francesco Bruni
Continuous Integration/Deployment with Docker and JenkinsContinuous Integration/Deployment with Docker and Jenkins
Continuous Integration/Deployment with Docker and Jenkins
Francesco Bruni4.6K views
CI and CD with Jenkins by Martin Málek
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
Martin Málek93.4K views
Deployment Automation with Docker by Egor Pushkin
Deployment Automation with DockerDeployment Automation with Docker
Deployment Automation with Docker
Egor Pushkin2.3K views
Jenkins - From Continuous Integration to Continuous Delivery by Virendra Bhalothia
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous Delivery
Virendra Bhalothia21.2K views
Jenkins + Docker = Continuous Improvement by Udaypal Aarkoti
Jenkins + Docker = Continuous ImprovementJenkins + Docker = Continuous Improvement
Jenkins + Docker = Continuous Improvement
Udaypal Aarkoti1.8K views
Pipeline as code - new feature in Jenkins 2 by Michal Ziarnik
Pipeline as code - new feature in Jenkins 2Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2
Michal Ziarnik2.3K views
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline by Robert McDermott
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Robert McDermott80.2K views
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS by Bamdad Dashtban
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Bamdad Dashtban29.9K views
CI/CD with Openshift and Jenkins by Ari LiVigni
CI/CD with Openshift and JenkinsCI/CD with Openshift and Jenkins
CI/CD with Openshift and Jenkins
Ari LiVigni8.9K views
Jenkins days workshop pipelines - Eric Long by ericlongtx
Jenkins days workshop  pipelines - Eric LongJenkins days workshop  pipelines - Eric Long
Jenkins days workshop pipelines - Eric Long
ericlongtx1.8K views
CONTINUOUS INTEGRATION WITH JENKINS AND GIT by Benjamin Lutaaya
CONTINUOUS INTEGRATION WITH JENKINS AND GITCONTINUOUS INTEGRATION WITH JENKINS AND GIT
CONTINUOUS INTEGRATION WITH JENKINS AND GIT
Benjamin Lutaaya2.4K views
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline by Slawa Giterman
Delivery Pipeline as Code: using Jenkins 2.0 PipelineDelivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
Slawa Giterman9K views
Jenkins Docker by Alex Soto
Jenkins DockerJenkins Docker
Jenkins Docker
Alex Soto65.3K views
Achieving CI/CD with Kubernetes by Ramit Surana
Achieving CI/CD with KubernetesAchieving CI/CD with Kubernetes
Achieving CI/CD with Kubernetes
Ramit Surana48.8K views
Atlanta Jenkins Area Meetup October 22nd 2015 by Kurt Madel
Atlanta Jenkins Area Meetup October 22nd 2015Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015
Kurt Madel667 views
JUC Europe 2015: Evolving the Jenkins UI by CloudBees
JUC Europe 2015: Evolving the Jenkins UIJUC Europe 2015: Evolving the Jenkins UI
JUC Europe 2015: Evolving the Jenkins UI
CloudBees252 views
Everything about Internet of Things: An Overview of Related Ontologies by Khan Reaz
Everything about Internet of Things: An Overview of Related OntologiesEverything about Internet of Things: An Overview of Related Ontologies
Everything about Internet of Things: An Overview of Related Ontologies
Khan Reaz992 views

Similar to Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)

CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014) by
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CloudBees
10.1K views47 slides
Jenkins Workflow Webinar - Dec 10, 2014 by
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014CloudBees
3.6K views46 slides
Journée DevOps : De l'intégration continue au déploiement continu avec Jenkins by
Journée DevOps : De l'intégration continue au déploiement continu avec JenkinsJournée DevOps : De l'intégration continue au déploiement continu avec Jenkins
Journée DevOps : De l'intégration continue au déploiement continu avec JenkinsPublicis Sapient Engineering
2.6K views39 slides
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de... by
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...CloudBees
3.8K views39 slides
Continuous Deployment of your Application - SpringOne Tour Dallas by
Continuous Deployment of your Application - SpringOne Tour DallasContinuous Deployment of your Application - SpringOne Tour Dallas
Continuous Deployment of your Application - SpringOne Tour DallasVMware Tanzu
145 views130 slides
London DevOps Meetup - PaaS as a platform for devops by
London DevOps Meetup - PaaS as a platform for devopsLondon DevOps Meetup - PaaS as a platform for devops
London DevOps Meetup - PaaS as a platform for devopsJeremy Brown
629 views12 slides

Similar to Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)(20)

CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014) by CloudBees
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CloudBees10.1K views
Jenkins Workflow Webinar - Dec 10, 2014 by CloudBees
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014
CloudBees3.6K views
Journée DevOps : De l'intégration continue au déploiement continu avec Jenkins by Publicis Sapient Engineering
Journée DevOps : De l'intégration continue au déploiement continu avec JenkinsJournée DevOps : De l'intégration continue au déploiement continu avec Jenkins
Journée DevOps : De l'intégration continue au déploiement continu avec Jenkins
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de... by CloudBees
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
CloudBees3.8K views
Continuous Deployment of your Application - SpringOne Tour Dallas by VMware Tanzu
Continuous Deployment of your Application - SpringOne Tour DallasContinuous Deployment of your Application - SpringOne Tour Dallas
Continuous Deployment of your Application - SpringOne Tour Dallas
VMware Tanzu145 views
London DevOps Meetup - PaaS as a platform for devops by Jeremy Brown
London DevOps Meetup - PaaS as a platform for devopsLondon DevOps Meetup - PaaS as a platform for devops
London DevOps Meetup - PaaS as a platform for devops
Jeremy Brown629 views
Building Efficient Parallel Testing Platforms with Docker by Laura Frank Tacho
Building Efficient Parallel Testing Platforms with DockerBuilding Efficient Parallel Testing Platforms with Docker
Building Efficient Parallel Testing Platforms with Docker
DockerCon 15 Keynote - Day 2 by Docker, Inc.
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
Docker, Inc.20.2K views
.NET Cloud-Native Bootcamp by VMware Tanzu
.NET Cloud-Native Bootcamp.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp
VMware Tanzu753 views
The path to a serverless-native era with Kubernetes by sparkfabrik
The path to a serverless-native era with KubernetesThe path to a serverless-native era with Kubernetes
The path to a serverless-native era with Kubernetes
sparkfabrik945 views
The path to a Serverless-native era with Kubernetes by Paolo Mainardi by NETWAYS
The path to a Serverless-native era with Kubernetes by Paolo MainardiThe path to a Serverless-native era with Kubernetes by Paolo Mainardi
The path to a Serverless-native era with Kubernetes by Paolo Mainardi
NETWAYS105 views
Net Devops Overview by Joel W. King
Net Devops OverviewNet Devops Overview
Net Devops Overview
Joel W. King3.2K views
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014 by FalafelSoftware
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
FalafelSoftware1.1K views
A Bit of Everything Chef by Mandi Walls
A Bit of Everything ChefA Bit of Everything Chef
A Bit of Everything Chef
Mandi Walls141 views

More from CloudBees

JUC Europe 2015: Scaling Your Jenkins Master with Docker by
JUC Europe 2015: Scaling Your Jenkins Master with DockerJUC Europe 2015: Scaling Your Jenkins Master with Docker
JUC Europe 2015: Scaling Your Jenkins Master with DockerCloudBees
843 views24 slides
JUC Europe 2015: Plugin Development with Gradle and Groovy by
JUC Europe 2015: Plugin Development with Gradle and GroovyJUC Europe 2015: Plugin Development with Gradle and Groovy
JUC Europe 2015: Plugin Development with Gradle and GroovyCloudBees
433 views19 slides
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave) by
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)CloudBees
518 views31 slides
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je... by
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...CloudBees
1.2K views44 slides
JUC Europe 2015: Jenkins Made Easy by
JUC Europe 2015: Jenkins Made EasyJUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made EasyCloudBees
402 views20 slides
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance by
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and MaintenanceJUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and MaintenanceCloudBees
284 views17 slides

More from CloudBees(20)

JUC Europe 2015: Scaling Your Jenkins Master with Docker by CloudBees
JUC Europe 2015: Scaling Your Jenkins Master with DockerJUC Europe 2015: Scaling Your Jenkins Master with Docker
JUC Europe 2015: Scaling Your Jenkins Master with Docker
CloudBees843 views
JUC Europe 2015: Plugin Development with Gradle and Groovy by CloudBees
JUC Europe 2015: Plugin Development with Gradle and GroovyJUC Europe 2015: Plugin Development with Gradle and Groovy
JUC Europe 2015: Plugin Development with Gradle and Groovy
CloudBees433 views
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave) by CloudBees
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
CloudBees518 views
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je... by CloudBees
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
CloudBees1.2K views
JUC Europe 2015: Jenkins Made Easy by CloudBees
JUC Europe 2015: Jenkins Made EasyJUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made Easy
CloudBees402 views
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance by CloudBees
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and MaintenanceJUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
CloudBees284 views
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In... by CloudBees
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
CloudBees311 views
JUC Europe 2015: Hey! What Did We Just Release? by CloudBees
JUC Europe 2015: Hey! What Did We Just Release?JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?
CloudBees254 views
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je... by CloudBees
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
CloudBees482 views
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects by CloudBees
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data ProjectsJUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
CloudBees291 views
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw... by CloudBees
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
CloudBees1.8K views
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin... by CloudBees
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
CloudBees265 views
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers by CloudBees
JUC Europe 2015: Enabling Continuous Delivery for Major RetailersJUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
CloudBees204 views
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger" by CloudBees
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
CloudBees291 views
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin... by CloudBees
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
CloudBees157 views
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos by CloudBees
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache MesosJUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
CloudBees278 views
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B... by CloudBees
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
CloudBees262 views
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,... by CloudBees
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
CloudBees350 views
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE... by CloudBees
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
CloudBees293 views
JUC Europe 2015: Configuration as Code: The Job DSL Plugin by CloudBees
JUC Europe 2015: Configuration as Code: The Job DSL PluginJUC Europe 2015: Configuration as Code: The Job DSL Plugin
JUC Europe 2015: Configuration as Code: The Job DSL Plugin
CloudBees266 views

Recently uploaded

Network Source of Truth and Infrastructure as Code revisited by
Network Source of Truth and Infrastructure as Code revisitedNetwork Source of Truth and Infrastructure as Code revisited
Network Source of Truth and Infrastructure as Code revisitedNetwork Automation Forum
26 views45 slides
20231123_Camunda Meetup Vienna.pdf by
20231123_Camunda Meetup Vienna.pdf20231123_Camunda Meetup Vienna.pdf
20231123_Camunda Meetup Vienna.pdfPhactum Softwareentwicklung GmbH
41 views73 slides
Evolving the Network Automation Journey from Python to Platforms by
Evolving the Network Automation Journey from Python to PlatformsEvolving the Network Automation Journey from Python to Platforms
Evolving the Network Automation Journey from Python to PlatformsNetwork Automation Forum
13 views21 slides
"Running students' code in isolation. The hard way", Yurii Holiuk by
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk Fwdays
11 views34 slides
Uni Systems for Power Platform.pptx by
Uni Systems for Power Platform.pptxUni Systems for Power Platform.pptx
Uni Systems for Power Platform.pptxUni Systems S.M.S.A.
56 views21 slides
Igniting Next Level Productivity with AI-Infused Data Integration Workflows by
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Safe Software
263 views86 slides

Recently uploaded(20)

"Running students' code in isolation. The hard way", Yurii Holiuk by Fwdays
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk
Fwdays11 views
Igniting Next Level Productivity with AI-Infused Data Integration Workflows by Safe Software
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Safe Software263 views
Case Study Copenhagen Energy and Business Central.pdf by Aitana
Case Study Copenhagen Energy and Business Central.pdfCase Study Copenhagen Energy and Business Central.pdf
Case Study Copenhagen Energy and Business Central.pdf
Aitana16 views
6g - REPORT.pdf by Liveplex
6g - REPORT.pdf6g - REPORT.pdf
6g - REPORT.pdf
Liveplex10 views
SAP Automation Using Bar Code and FIORI.pdf by Virendra Rai, PMP
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdf
Voice Logger - Telephony Integration Solution at Aegis by Nirmal Sharma
Voice Logger - Telephony Integration Solution at AegisVoice Logger - Telephony Integration Solution at Aegis
Voice Logger - Telephony Integration Solution at Aegis
Nirmal Sharma39 views
Serverless computing with Google Cloud (2023-24) by wesley chun
Serverless computing with Google Cloud (2023-24)Serverless computing with Google Cloud (2023-24)
Serverless computing with Google Cloud (2023-24)
wesley chun11 views
PharoJS - Zürich Smalltalk Group Meetup November 2023 by Noury Bouraqadi
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023
Noury Bouraqadi127 views
Piloting & Scaling Successfully With Microsoft Viva by Richard Harbridge
Piloting & Scaling Successfully With Microsoft VivaPiloting & Scaling Successfully With Microsoft Viva
Piloting & Scaling Successfully With Microsoft Viva
Unit 1_Lecture 2_Physical Design of IoT.pdf by StephenTec
Unit 1_Lecture 2_Physical Design of IoT.pdfUnit 1_Lecture 2_Physical Design of IoT.pdf
Unit 1_Lecture 2_Physical Design of IoT.pdf
StephenTec12 views
Five Things You SHOULD Know About Postman by Postman
Five Things You SHOULD Know About PostmanFive Things You SHOULD Know About Postman
Five Things You SHOULD Know About Postman
Postman33 views

Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)

  • 1. Pimp your Continuous Delivery Pipeline with Jenkins workflow Cyrille Le Clerc, CloudBees ©2014 CloudBees, Inc. All Rights Reserved
  • 2. ©2014 CloudBees, Inc. All Rights Reserved About Me @cyrilleleclerc Cyrille Le Clerc Open Source CTO Product Management DevOps, Infra as Code, Con9nuous Delivery
  • 3. ©2014 CloudBees, Inc. All Rights Reserved About you Jenkins? CI? CD? Code Jenkins plugin?
  • 4. ©2014 CloudBees, Inc. All Rights Reserved Agenda • Con9nuous Delivery • Jenkins & Con9nuous Delivery • Workflows in Jenkins today • The new Jenkins Workflow Engine • Jenkins Workflow Syntax Card • Possible future
  • 5. Continuous Delivery ©2014 CloudBees, Inc. All Rights Reserved
  • 6. Continuous Delivery ©2014 CloudBees, Inc. All Rights Reserved • “Reliable So+ware Releases through Build, Test, and Deployment Automa=on” • DONE = Shippable into Produc9on
  • 7. Continuous Integration Steps ©2014 CloudBees, Inc. All Rights Reserved Con$nuous Integra$on Source Code Quality Analysis Compile & Unit Tests Binaries
  • 8. Continuous Delivery Steps QA ©2014 CloudBees, Inc. All Rights Reserved Con$nuous Delivery DEV DEV OPS Source Code Quality Analysis Compile & Unit Tests Binaries Perfs Environment Func Test Environment UAT Environment Production Environment GO LIVE! Release! Staging Environment
  • 9. Continuous Delivery Pipeline ©2014 CloudBees, Inc. All Rights Reserved Continuous Delivery Pipeline Compile & Unit Tests Perfs Tests Selenium Tests Deploy UAT Sonar Analysis Deploy Staging Deploy Production
  • 10. Jenkins: Hub of Continuous Delivery ©2014 CloudBees, Inc. All Rights Reserved • Connect the dots • It is the process Source Code Perfs Environment Func Test Environment UAT Environment Binaries Quality Analysis Compile & Unit Tests
  • 11. CD Pipeline è Workflow ©2014 CloudBees, Inc. All Rights Reserved Continuous Delivery Pipeline Compile & Unit Tests Perfs Tests Selenium Tests Deploy UAT Sonar Analysis Deploy Staging Deploy Production
  • 12. ©2014 CloudBees, Inc. All Rights Reserved What we need • Complex pipelines involving mul9ple stages • Non-­‐sequen$al logic such as loops, forks … • Long-­‐running builds must survive outages • Interac$ons with humans including pauses, input • Restartable builds in case of transient errors • Reusable defini$ons to avoid duplica9on • Comprehensible scripts with one clear defini9on
  • 13. Workflow until today ©2014 CloudBees, Inc. All Rights Reserved • Job chaining • Build Flow Plugin • Build Pipeline Plugin • Build Delivery Pipeline
  • 14. Workflow until today • Many atomic jobs ©2014 CloudBees, Inc. All Rights Reserved • Hard to share variables/state between jobs • Limited logic • Mix build triggers, parameterized build …
  • 15. Build Flow Plugin • Did have scriptability and extensibility ©2014 CloudBees, Inc. All Rights Reserved • Did not address configura9on “sprawl” • Disjointed view of what really ran • No ability to survive restarts • Almost good enough but could not go further
  • 16. Jenkins Workflow Engine ©2014 CloudBees, Inc. All Rights Reserved
  • 17. Simplifying our sample workflow ©2014 CloudBees, Inc. All Rights Reserved Compile & Unit Tests Perfs Tests Selenium Tests Deploy UAT Sonar Analysis Deploy Staging Deploy Production
  • 18. Simplifying our sample workflow ©2014 CloudBees, Inc. All Rights Reserved Compile & Unit Tests Perfs Tests Selenium Tests Deploy UAT Sonar Analysis Deploy Staging Deploy Production
  • 19. ©2014 CloudBees, Inc. All Rights Reserved What we need • Complex pipelines involving mul9ple stages • Non-­‐sequen$al logic such as loops, forks … • Long-­‐running builds must survive outages • Interac$ons with humans including pauses, input • Restartable builds in case of transient errors • Reusable defini$ons to avoid duplica9on • Comprehensible scripts with one clear defini9on
  • 20. New Workflow Syntax ©2014 CloudBees, Inc. All Rights Reserved
  • 21. ©2014 CloudBees, Inc. All Rights Reserved Key features • En9re flow is one concise Groovy script – For loops, try-­‐finally, fork-­‐join … • Can restart Jenkins while flow is running • Allocate slave nodes and workspaces – As many as you want, when you want • Stages throYle concurrency of builds • Human input/approval integrated into flow • Standard project concepts: SCM, ar9facts, plugins
  • 22. Groovy DSL vs. Graphical Workflow • Familiar control flow construc9on ©2014 CloudBees, Inc. All Rights Reserved • Familiar “tools” for building abstrac9ons Func9ons, classes, variables, … • Workflow in version control • As opposed to: Graphical workflow designer
  • 23. ©2014 CloudBees, Inc. All Rights Reserved Project setup • One workflow is defined as a job • Single script for all steps • Build triggers & parameters like regular projects • Each workflow execu9on is a regular Jenkins build displayed in regular Jenkins views • Graphical visualiza9on of actual build possible Not of visualiza9on job defini9on but of build execu9on
  • 24. Non-sequential logic try {} catch {} ©2014 CloudBees, Inc. All Rights Reserved
  • 25. Interaction with humans ©2014 CloudBees, Inc. All Rights Reserved
  • 26. Restartable build / checkpoint ©2014 CloudBees, Inc. All Rights Reserved
  • 27. ©2014 CloudBees, Inc. All Rights Reserved Visualization
  • 28. ©2014 CloudBees, Inc. All Rights Reserved Stages • Semaphore • Visualiza9on
  • 29. Comprehensible scripts ©2014 CloudBees, Inc. All Rights Reserved
  • 30. ©2014 CloudBees, Inc. All Rights Reserved Demo time!
  • 31. Workflow Syntax Card ©2014 CloudBees, Inc. All Rights Reserved
  • 32. Workflow Syntax Card • stage: Enter a new stage ©2014 CloudBees, Inc. All Rights Reserved • node: Allocate node • ws: Allocate workspace • parallel: Execute sub-­‐workflow in parallel • retry: Retry the body up to N 9mes • catchError: Catch error and con9nue • input: Input / human interac9on • load: Evaluate a Groovy source file into the workflow script
  • 33. Workflow Syntax Card • step: General build step ©2014 CloudBees, Inc. All Rights Reserved • sh: Shell script • bat: Windows batch script
  • 34. Workflow Syntax Card • archive: Archive ar9facts ©2014 CloudBees, Inc. All Rights Reserved • unarchive: Copy archived ar9fact into the workspace • echo: Print message • dir: Change directory • readFile: Read file from workspace • writeFile: Write file to workspace
  • 35. Workflow Syntax Card • git: ©2014 CloudBees, Inc. All Rights Reserved Git • svn: Subversion • scm: General SCM • tool: install a tool • build: Build a job
  • 36. Workflow Syntax Card • checkpoint: capture the state of the execu9on so that it can be restarted later ©2014 CloudBees, Inc. All Rights Reserved
  • 37. Possible Future ©2014 CloudBees, Inc. All Rights Reserved
  • 38. Possible Future: probably OSS • More plugin interoperability ©2014 CloudBees, Inc. All Rights Reserved • Mul9-­‐branch project (& SCM API) integra9on • More advanced SCM • In-­‐IDE edi9ng support • Concise syntax
  • 39. Possible Future: probably Jenkins Enterprise • More visualiza9ons ©2014 CloudBees, Inc. All Rights Reserved • Validated merge integra9on • Deployment, incl. blue/green with rollback • Freestyle and/or Build Flow import • Templates integra9on
  • 40. Get the code • hYps://gist.github.com/cyrille-­‐leclerc/ 796085e19d9cec4a71ef – workflow.groovy ©2014 CloudBees, Inc. All Rights Reserved
  • 41. ©2014 CloudBees, Inc. All Rights Reserved