Building Jenkins Pipelines at Scale

Julien Pivotto
Julien PivottoOpen Source Consultant at Inuits
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Building Pipelines
at Scale
Julien Pivotto
inuits.eu
25th June 2014
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
..
Building Pipelines at Scale
Introduction
Who’s who
Pipelines
Puppet
Why
How
Conclusion
Plugins
Why
How
Conclusion
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Who’s who
.
..
Julien Pivotto
Open-Source Consultant at inuits.eu
Linux Systems Administrator
FOSS Defender for many years
Œ DevOps
Puppet user since 2011
Doing also some Ruby & Python
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Who’s who
.
..
inuits
Open-Source Consultancy company
50+ people in 4 countries (.be, .ua, .nl & .cz)
Doing both Development & Systems Administration
A lot of domains: Linux, Web, Databases, Monitoring…
Early DevOps practitioners
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Who’s who
.
..
MediaMosa
Drupal-based Digital Asset Management system
Open-source
Store assets
Transcode videos
Create, extract and manage metadata using open standards:
Dublin Core, Qualified DC, IEEE/LOM, CZP
Webservice oriented
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Who’s who
.
..
MediaSalsa: MediaMosa As a Service
A turn-key MediaMosa solution
A few environments:
Dev/Uat/Prod environments
Customer-specific environments
One backend per environment
Multiple frontends per backend
= A lot of Drupal sites
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Definition of pipelines
..
A pipeline is a chain of Jenkins jobs that are run to fetch,
compile, package, run tests and deploy an application (build
pipeline plugin).
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Definition of pipelines
..
A pipeline is a chain of Jenkins jobs that are run to fetch,
compile, package, run tests and deploy an application (build
pipeline plugin).
Pipeline vs large (or independent) jobs:
Separation between different tasks
Overview of tests, etc…
Deployment depends on testing
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Example: a puppet pipeline
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Inside the pipeline
Checkout
Style
Syntax
Compile
Unit tests
Integration tests
Packaging
Regression tests
Deployment / Delivery
…
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Ok, let’s use pipelines!
Let’s make a pipeline for our puppet code
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Ok, let’s use pipelines!
Let’s make a pipeline for our puppet code
…and one for our puppet code in dev environment
…and one for our puppet code in uat environment
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Ok, let’s use pipelines!
Let’s make a pipeline for our puppet code
…and one for our puppet code in dev environment
…and one for our puppet code in uat environment
Let’s make a pipeline for backend app
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Ok, let’s use pipelines!
Let’s make a pipeline for our puppet code
…and one for our puppet code in dev environment
…and one for our puppet code in uat environment
Let’s make a pipeline for backend app
…and one for backend app in dev environment
…and one for backend app in uat environment
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Ok, let’s use pipelines!
Let’s make a pipeline for our puppet code
…and one for our puppet code in dev environment
…and one for our puppet code in uat environment
Let’s make a pipeline for backend app
…and one for backend app in dev environment
…and one for backend app in uat environment
Let’s make 5 pipelines for frontend apps
…and 5 for frontends apps in dev environment
…and 5 for frontends apps in uat environment
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
How to scale?
First attempt: clone jobs in the ui
Dozens of jobs to clone & edit
Human intervention = mistakes
Second attempt: clone jobs xml files
grep & cp & sed…
Crappy bash scripting is crappy
Mmmh…we need something else…
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Let’s change the pipelines now!
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Let’s change the pipelines now!
click
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Let’s change the pipelines now!
click click
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Let’s change the pipelines now!
click click click click click
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Let’s change the pipelines now!
click click click click click click click click click click click click click
click click click click click click click click click click click click click
click click click click click click click click click click click click click
click click click click click click click click click click click
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Let’s change the pipelines now!
click click click click click click click click click click click click click
click click click click click click click click click click click click click
click click click click click click click click click click click click click
click click click click click click click click click click click click click
click click click click click click click click click click click click click
click click click click click click click click click click click click click
click click click click click click click click click click click click click
click click click
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet
.
Puppet
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/Why
.
..
Infrastructure as Code
Puppet/Chef/Cfengine/…same fight:
Modelize your infrastructure
Reproducable platforms
Fast and reliable
Disaster recovery for ”free”
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/Why
.
..
What to puppetize
Usually you puppetize:
OS installation & configuration
Apps installation & configuration
DB installation & configuration
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/Why
.
..
What to puppetize
Usually you puppetize:
OS installation & configuration
Apps installation & configuration
DB installation & configuration
But you do not automate:
Application data
Are Jenkins jobs to be puppetized?
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/Why
.
..
What to puppetize
Usually you puppetize:
OS installation & configuration
Apps installation & configuration
DB installation & configuration
But you do not automate:
Application data
Are Jenkins jobs to be puppetized?
…we tried…
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/How
.
..
Modules structure
Using the Jenkins upstream module
And creating a specific jenkinsjobs module
Difficult to share
Mainly templates
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/How
.
..
Structure of the module
manifests
job.pp (definition; file)
packages.pp (packages needed by tests)
dashboard.pp (augeas xml to modify jenkins config)
pipeline/frontend.pp (definition; jobs)
pipeline/backend.pp (definition; jobs)
service.pp (exec to reload configuration)
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/How
.
..
job.pp
Takes a template as parameter
Creates xml file and reload jenkins configuration
It has a lot more arguments (project name, next job, etc…)
Adds the job to the view (augeas)
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/How
.
..
service.pp
Reload the Jenkins service
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/How
.
..
service.pp
Reload the Jenkins service
..
java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar
-s http://127.0.0.1:8080/ reload-configuration
--username "${username}" --password "${password}"
It makes Jenkins unavailable
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/How
.
..
pipeline.pp
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/How
.
..
pipeline.pp
..
Defaults for jobs
.
Jenkinsjobs::Job{
ensure => $ensure,
git_repository => $git_repository,
customer => $customer,
assigned_node => $debian_slave,
dashboard_view => $dashboard_view,
package_name => "frontend-${customer}",
vhost_docroot => $_vhost_docroot,
custom_modules => 'sites/all/modules/custom',
job_type => 'drupal',
}
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/How
.
..
pipeline.pp
..
Defaults for promotions
.
Jenkinsjobs::Promotion{
ensure => $ensure,
customer => $customer,
assigned_node => $debian_slave,
packaging_job => "frontend-build-${customer}",
package_name => "frontend-${customer}",
vhost_docroot => $_vhost_docroot,
job_name => "frontend-promo-${customer}",
}
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/How
.
..
pipeline.pp
..
Jobs definitions
.
jenkinsjobs::job{
"frontend-checkout-${customer}":
job_template => 'jj/jobs/checkout.erb',
next_job => "frontend-syntax-${customer}",
start_pipeline => true,
}
jenkinsjobs::job{
"frontend-syntax-${customer}":
job_template => 'jj/jobs/syntax.erb',
next_job => "frontend-style-${customer}",
}
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/How
.
..
pipeline.pp
..
Job with promotions
.
jenkinsjobs::job{
"frontend-promo-${customer}":
job_template => 'jj/jobs/promote.erb',
promotions => [
"deploy-${customer}-front-to-uat",
"deploy-${customer}-front-to-prod",
"deploy-${customer}-front-to-com-prod",
],
}
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/How
.
..
pipeline.pp
..
Promotions
.
if 'uat' in $targets {
jenkinsjobs::promotion {
"deploy-${customer}-front-to-uat":
template => 'jj/promotion/uat.erb',
debian_repo => 'mediamosa-uat',
targets => $targets['viaa-uat'],
}
}
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/How
.
..
dashboard.pp
..
Augeas example
.
augeas {
"dashboard view $title":
lens => 'Xml.lns',
incl => '/var/lib/jenkins/config.xml',
context => '/files/var/lib/jenkins/config.xml',
changes => [
"set ${augeas_prefix}[last()+1]/owner/#attribute/class "hudson"",
"set ${augeas_prefix}[last()]/owner/#attribute/reference "../../.."",
"set ${augeas_prefix}[last()]/includeStdJobList/#text "true"",
"set ${augeas_prefix}[last()]/name/#text "${title}"",
],
onlyif =>
"match ${file_prefix}/hudson/views/*/name/#text[.="${title}"] size == 0",
notify => Exec['reload-jenkins'],
}
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/Conclusion
.
..
Advantages of setting pipelines in Puppet
Easy to deploy new pipelines
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/Conclusion
.
..
Advantages of setting pipelines in Puppet
Easy to deploy new pipelines
Deploy pipelines in the same time as applications (exported
resources)
Define pipelines at the same place as applications (puppet)
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/Conclusion
.
..
Advantages of setting pipelines in Puppet
Easy to deploy new pipelines
Deploy pipelines in the same time as applications (exported
resources)
Define pipelines at the same place as applications (puppet)
Track history of pipeline changes
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/Conclusion
.
..
Advantages of setting pipelines in Puppet
Easy to deploy new pipelines
Deploy pipelines in the same time as applications (exported
resources)
Define pipelines at the same place as applications (puppet)
Track history of pipeline changes
Having separate jobs for each project
Reuse puppet template functionality
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/Conclusion
.
..
Advantages of setting pipelines in Puppet
Easy to deploy new pipelines
Deploy pipelines in the same time as applications (exported
resources)
Define pipelines at the same place as applications (puppet)
Track history of pipeline changes
Having separate jobs for each project
Reuse puppet template functionality
Deploy new Jenkins server in minutes with all jobs
Keep several Jenkins (test, prod) in sync
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/Conclusion
.
..
Advantages of setting pipelines in Puppet
Easy to deploy new pipelines
Deploy pipelines in the same time as applications (exported
resources)
Define pipelines at the same place as applications (puppet)
Track history of pipeline changes
Having separate jobs for each project
Reuse puppet template functionality
Deploy new Jenkins server in minutes with all jobs
Keep several Jenkins (test, prod) in sync
Add ssh keys, git config, etc…in Puppet too
Create test databases & vhosts in Puppet (exported resources)
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/Conclusion
.
..
Disadvantages
Play with Augeas & xml (wrong feeling)
Makes Jenkins unavailable on changes
Every small change ends up in Puppet
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins
.
Plugins
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/Why
.
..
A lighter approach: Jenkins plugins
Remove the Puppet complexity
Still having Pipelines in sync
Minimize human intervention
Speed-up the pipelines
Do not restart Jenkins each time
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/How
.
..
Plugin #1: Build flow
Creates Pipelines
Uses Groovy scripts
Can run jobs in parallel
Several other plugins do the same
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/How
.
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/How
.
..
Build Flow: Groovy scripts
..
Pipelines
.
build ( "syntax" )
build ( "lint" )
build ( "rspec" )
build ( "doc" )
build ( "package" )
build ( "release" )
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/How
.
..
Build Flow: Groovy scripts
..
Parallel jobs
.
parallel (
{
build ( "syntax" )
},
{
build ( "lint" )
},
{
build ( "rspec" )
},
)
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/How
.
..
Build Flow: Groovy scripts
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/How
.
..
Build Flow: Groovy scripts
..
Conditionals
.
if ( params["RELEASE"] == "true" ) {
switch ( params["DEPLOY_METHOD"] ) {
case "librarian":
build ( "librarian" )
case "r10k":
build ( "r10k" )
case "package":
build ( "package" )
}
}
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/How
.
..
Build Flow: Groovy scripts
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/How
.
..
Build Flow: Groovy scripts
..
Build parameters
.
build ( "gitsubmodules",
NAME: params["NAME"],
ENVIRONMENT: params["ENVIRONMENT"]
)
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/How
.
..
Build Flow: Groovy scripts
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/How
.
..
But also…
A ”retry” function to try the failing jobs 2, 3, 4 time
A ”rescue” function to launch a jobs if another fails
The first job fails if one of the pipeline jobs fails!
And a lot of other stuffs
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/How
.
..
Plugin #2: Job Generator
Jenkins jobs generator
Creates jobs on the fly
Jobs do not need to be created at the start of the (flow)
pipeline
Also updates existing jobs
Allows to keep jobs per project (per project history and
graphes)
Takes special parameters
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/How
.
..
Build Flow Plugin + Job generator
One starting job (orchestrator)
Calls some jobs or some generators, in parallel
Ends with a nice, up-to-date Pipeline
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/How
.
..
Plugin #3: JobConfigHistory Plugin
Keeps track of the changes in the jobs
Alternative to keep the xml in git
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Conclusion
.
Conclusion
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Conclusion
.
..
Other bottlenecks/problems at scale
Load of the Jenkins server
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Conclusion
.
..
Other bottlenecks/problems at scale
Load of the Jenkins server: Think slaves
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Conclusion
.
..
Other bottlenecks/problems at scale
Load of the Jenkins server: Think slaves
SCM pulling
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Conclusion
.
..
Other bottlenecks/problems at scale
Load of the Jenkins server: Think slaves
SCM pulling: Think Gerrit or Trigger
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Conclusion
.
..
Other bottlenecks/problems at scale
Load of the Jenkins server: Think slaves
SCM pulling: Think Gerrit or Trigger
Jobs are slow
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Conclusion
.
..
Other bottlenecks/problems at scale
Load of the Jenkins server: Think slaves
SCM pulling: Think Gerrit or Trigger
Jobs are slow: Optimize, Divide them, Monitor them
(graphite)
Notifications
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Conclusion
.
..
Other bottlenecks/problems at scale
Load of the Jenkins server: Think slaves
SCM pulling: Think Gerrit or Trigger
Jobs are slow: Optimize, Divide them, Monitor them
(graphite)
Notifications: Think XMPP, IRC, mails, Gerrit…
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Conclusion
.
..
Pipelines at scale…
Two different approaches
application-level
infrastructure-level
Pick the one you prefer (or invent your own)
Do not hesitate to separate Jobs
Monitor your jobs/pipelines (graphite)
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Conclusion
.
Thank you!
Thanks to my colleague @tomdevylder for the Build Flow slides
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Conclusion
.
..
Contact
Julien Pivotto
julien@inuits.eu
@roidelapluie
Inuits BVBA
Belgium
+32 473 441 636
https://inuits.eu
Jenkins User Conference Europe #jenkinsconf
Corporate Community
Thank You To Our Sponsors
Platinum Gold
Silver
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
#jenkinsconf
1 of 73

Recommended

Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS by
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 AWSBamdad Dashtban
29.9K views22 slides
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14) by
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)CloudBees
35.7K views41 slides
Brujug Jenkins pipeline scalability by
Brujug Jenkins pipeline scalabilityBrujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalabilityDamien Coraboeuf
2.9K views55 slides
Jenkins, pipeline and docker by
Jenkins, pipeline and docker Jenkins, pipeline and docker
Jenkins, pipeline and docker AgileDenver
3K views48 slides
Javaone 2014 - Git & Docker with Jenkins by
Javaone 2014 - Git & Docker with JenkinsJavaone 2014 - Git & Docker with Jenkins
Javaone 2014 - Git & Docker with JenkinsAndy Pemberton
2.4K views16 slides
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

More Related Content

What's hot

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
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines by
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins PipelinesAn Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins PipelinesSteffen Gebert
5.3K views60 slides
Testing with Docker by
Testing with DockerTesting with Docker
Testing with Dockertoffermann
5.9K views56 slides
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline by
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 PipelineSlawa Giterman
9K views45 slides
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
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code by
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-CodeSD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-CodeBrian Dawson
3.1K views46 slides

What's hot(20)

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
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines by Steffen Gebert
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins PipelinesAn Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
Steffen Gebert5.3K views
Testing with Docker by toffermann
Testing with DockerTesting with Docker
Testing with Docker
toffermann5.9K 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
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
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code by Brian Dawson
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-CodeSD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
Brian Dawson3.1K 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
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand by Troublemaker Khunpech
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
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
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
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
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 Delivery Pipeline with Docker and Jenkins by Camilo Ribeiro
Continuous Delivery Pipeline with Docker and JenkinsContinuous Delivery Pipeline with Docker and Jenkins
Continuous Delivery Pipeline with Docker and Jenkins
Camilo Ribeiro1.4K views
Let’s start Continuous Integration with jenkins by Tomohide Kakeya
Let’s start Continuous Integration with jenkinsLet’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkins
Tomohide Kakeya7K views
Automate App Container Delivery with CI/CD and DevOps by Daniel Oh
Automate App Container Delivery with CI/CD and DevOpsAutomate App Container Delivery with CI/CD and DevOps
Automate App Container Delivery with CI/CD and DevOps
Daniel Oh3.9K 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: 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
Continuous Integration With Jenkins Docker SQL Server by Chris Adkin
Continuous Integration With Jenkins Docker SQL ServerContinuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL Server
Chris Adkin925 views

Viewers also liked

Pipeline: Continuous Delivery as Code in Jenkins 2.0 by
Pipeline: Continuous Delivery as Code in Jenkins 2.0Pipeline: Continuous Delivery as Code in Jenkins 2.0
Pipeline: Continuous Delivery as Code in Jenkins 2.0Jules Pierre-Louis
2.4K views36 slides
(Declarative) Jenkins Pipelines by
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins PipelinesSteffen Gebert
21.7K views52 slides
Jenkins Pipelines by
Jenkins PipelinesJenkins Pipelines
Jenkins PipelinesSteffen Gebert
10.1K views46 slides
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos? by
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?Carlos Sanchez
4.6K views59 slides
Jenkins scaling best practices by
Jenkins scaling best practicesJenkins scaling best practices
Jenkins scaling best practicesHenry McBride
765 views11 slides
Introduction to Amazon EC2 Container Service and setting up build pipeline wi... by
Introduction to Amazon EC2 Container Service and setting up build pipeline wi...Introduction to Amazon EC2 Container Service and setting up build pipeline wi...
Introduction to Amazon EC2 Container Service and setting up build pipeline wi...Swapnil Dahiphale
954 views42 slides

Viewers also liked(20)

Pipeline: Continuous Delivery as Code in Jenkins 2.0 by Jules Pierre-Louis
Pipeline: Continuous Delivery as Code in Jenkins 2.0Pipeline: Continuous Delivery as Code in Jenkins 2.0
Pipeline: Continuous Delivery as Code in Jenkins 2.0
Jules Pierre-Louis2.4K views
(Declarative) Jenkins Pipelines by Steffen Gebert
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines
Steffen Gebert21.7K views
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos? by Carlos Sanchez
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Carlos Sanchez4.6K views
Jenkins scaling best practices by Henry McBride
Jenkins scaling best practicesJenkins scaling best practices
Jenkins scaling best practices
Henry McBride765 views
Introduction to Amazon EC2 Container Service and setting up build pipeline wi... by Swapnil Dahiphale
Introduction to Amazon EC2 Container Service and setting up build pipeline wi...Introduction to Amazon EC2 Container Service and setting up build pipeline wi...
Introduction to Amazon EC2 Container Service and setting up build pipeline wi...
Swapnil Dahiphale954 views
Learn Dashing Widget in 90 minutes by Larry Cai
Learn Dashing Widget in 90 minutesLearn Dashing Widget in 90 minutes
Learn Dashing Widget in 90 minutes
Larry Cai33.3K views
JCConf2016 Jenkins Pipeline by Ching Yi Chan
JCConf2016 Jenkins PipelineJCConf2016 Jenkins Pipeline
JCConf2016 Jenkins Pipeline
Ching Yi Chan833 views
Automated Testing Environment by Bugzilla, Testopia and Jenkins by walkerchang
Automated Testing Environment by Bugzilla, Testopia and JenkinsAutomated Testing Environment by Bugzilla, Testopia and Jenkins
Automated Testing Environment by Bugzilla, Testopia and Jenkins
walkerchang15.8K views
SCM Puppet: from an intro to the scaling by Stanislav Osipov
SCM Puppet: from an intro to the scalingSCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scaling
Stanislav Osipov5.1K views
JavaScript + Jenkins = Winning! by Eric Wendelin
JavaScript + Jenkins = Winning!JavaScript + Jenkins = Winning!
JavaScript + Jenkins = Winning!
Eric Wendelin41.5K views
Continuous Integration With Hudson (and Jenkins) by Carlo Bonamico
Continuous Integration With Hudson (and Jenkins)Continuous Integration With Hudson (and Jenkins)
Continuous Integration With Hudson (and Jenkins)
Carlo Bonamico51.5K views
Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf by Julia Mateo
Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconfContinuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf
Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf
Julia Mateo5.2K 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
Continuous Delivery with Jenkins and Wildfly (2014) by Tracy Kennedy
Continuous Delivery with Jenkins and Wildfly (2014)Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)
Tracy Kennedy41.1K views
Jenkins and Chef: Infrastructure CI and Automated Deployment by Dan Stine
Jenkins and Chef: Infrastructure CI and Automated DeploymentJenkins and Chef: Infrastructure CI and Automated Deployment
Jenkins and Chef: Infrastructure CI and Automated Deployment
Dan Stine56.2K views

Similar to Building Jenkins Pipelines at Scale

Janus Workshop @ ClueCon 2020 by
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Lorenzo Miniero
675 views109 slides
Jenkins User Conference: Building Your Continuous Delivery Toolkit by
Jenkins User Conference: Building Your Continuous Delivery ToolkitJenkins User Conference: Building Your Continuous Delivery Toolkit
Jenkins User Conference: Building Your Continuous Delivery ToolkitXebiaLabs
756 views19 slides
Going literate in Amadeus JUC Berlin June 25th 2014 by
Going literate in Amadeus JUC Berlin June 25th 2014Going literate in Amadeus JUC Berlin June 25th 2014
Going literate in Amadeus JUC Berlin June 25th 2014Vincent Latombe
795 views30 slides
Building your Continuous Delivery Toolkit @ JUC SF 2014 by
Building your Continuous Delivery Toolkit @ JUC SF 2014Building your Continuous Delivery Toolkit @ JUC SF 2014
Building your Continuous Delivery Toolkit @ JUC SF 2014XebiaLabs
579 views19 slides
Lean Engineering: How to make Engineering a full Lean UX partner by
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerBill Scott
24.8K views63 slides
Getting to push_button_deploys by
Getting to push_button_deploysGetting to push_button_deploys
Getting to push_button_deploysChristian Mague
873 views57 slides

Similar to Building Jenkins Pipelines at Scale(20)

Jenkins User Conference: Building Your Continuous Delivery Toolkit by XebiaLabs
Jenkins User Conference: Building Your Continuous Delivery ToolkitJenkins User Conference: Building Your Continuous Delivery Toolkit
Jenkins User Conference: Building Your Continuous Delivery Toolkit
XebiaLabs756 views
Going literate in Amadeus JUC Berlin June 25th 2014 by Vincent Latombe
Going literate in Amadeus JUC Berlin June 25th 2014Going literate in Amadeus JUC Berlin June 25th 2014
Going literate in Amadeus JUC Berlin June 25th 2014
Vincent Latombe795 views
Building your Continuous Delivery Toolkit @ JUC SF 2014 by XebiaLabs
Building your Continuous Delivery Toolkit @ JUC SF 2014Building your Continuous Delivery Toolkit @ JUC SF 2014
Building your Continuous Delivery Toolkit @ JUC SF 2014
XebiaLabs579 views
Lean Engineering: How to make Engineering a full Lean UX partner by Bill Scott
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partner
Bill Scott24.8K views
Juc paris olivier lamy talk by Olivier Lamy
Juc paris olivier lamy talkJuc paris olivier lamy talk
Juc paris olivier lamy talk
Olivier Lamy515 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
Jenkins Made Easy - Jenkins User Conference 2015 at London by Nobuaki Ogawa
Jenkins Made Easy - Jenkins User Conference 2015 at LondonJenkins Made Easy - Jenkins User Conference 2015 at London
Jenkins Made Easy - Jenkins User Conference 2015 at London
Nobuaki Ogawa5.9K views
Configuration As Code: The Job DSL Plugin by Daniel Spilker
Configuration As Code: The Job DSL PluginConfiguration As Code: The Job DSL Plugin
Configuration As Code: The Job DSL Plugin
Daniel Spilker4K views
Seven Habits of Highly Effective Jenkins Users (2014 edition!) by Andrew Bayer
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Andrew Bayer106.5K views
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code by Damien Duportal
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as codeVoxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
Damien Duportal655 views
Symfony4 - A new way of developing web applications by Antonio Peric-Mazar
Symfony4 - A new way of developing web applicationsSymfony4 - A new way of developing web applications
Symfony4 - A new way of developing web applications
Jenkins User Conference 2014 by Dan Cundiff
Jenkins User Conference 2014Jenkins User Conference 2014
Jenkins User Conference 2014
Dan Cundiff889 views
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards! by Linaro
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!
Linaro1.4K views
Wds leanengineering-141103233017-conversion-gate02 by Shivam Prajapati
Wds leanengineering-141103233017-conversion-gate02Wds leanengineering-141103233017-conversion-gate02
Wds leanengineering-141103233017-conversion-gate02
Shivam Prajapati246 views
JUC Europe 2015: A Reproducible Build Environment with Jenkins by CloudBees
JUC Europe 2015: A Reproducible Build Environment with JenkinsJUC Europe 2015: A Reproducible Build Environment with Jenkins
JUC Europe 2015: A Reproducible Build Environment with Jenkins
CloudBees140 views
DockerCon SF 2015: Keynote Day 1 by Docker, Inc.
DockerCon SF 2015: Keynote Day 1DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1
Docker, Inc.19K views
Symfony4: A new way to develop applications | Antonio Peric | CODEiD by CODEiD PHP Community
Symfony4: A new way to develop applications | Antonio Peric | CODEiDSymfony4: A new way to develop applications | Antonio Peric | CODEiD
Symfony4: A new way to develop applications | Antonio Peric | CODEiD

More from Julien Pivotto

The O11y Toolkit by
The O11y ToolkitThe O11y Toolkit
The O11y ToolkitJulien Pivotto
38 views24 slides
What's New in Prometheus and Its Ecosystem by
What's New in Prometheus and Its EcosystemWhat's New in Prometheus and Its Ecosystem
What's New in Prometheus and Its EcosystemJulien Pivotto
12 views42 slides
Prometheus: What is is, what is new, what is coming by
Prometheus: What is is, what is new, what is comingPrometheus: What is is, what is new, what is coming
Prometheus: What is is, what is new, what is comingJulien Pivotto
42 views27 slides
What's new in Prometheus? by
What's new in Prometheus?What's new in Prometheus?
What's new in Prometheus?Julien Pivotto
15 views10 slides
Introduction to Grafana Loki by
Introduction to Grafana LokiIntroduction to Grafana Loki
Introduction to Grafana LokiJulien Pivotto
198 views11 slides
Why you should revisit mgmt by
Why you should revisit mgmtWhy you should revisit mgmt
Why you should revisit mgmtJulien Pivotto
10 views46 slides

More from Julien Pivotto(20)

What's New in Prometheus and Its Ecosystem by Julien Pivotto
What's New in Prometheus and Its EcosystemWhat's New in Prometheus and Its Ecosystem
What's New in Prometheus and Its Ecosystem
Julien Pivotto12 views
Prometheus: What is is, what is new, what is coming by Julien Pivotto
Prometheus: What is is, what is new, what is comingPrometheus: What is is, what is new, what is coming
Prometheus: What is is, what is new, what is coming
Julien Pivotto42 views
Introduction to Grafana Loki by Julien Pivotto
Introduction to Grafana LokiIntroduction to Grafana Loki
Introduction to Grafana Loki
Julien Pivotto198 views
Observing the HashiCorp Ecosystem From Prometheus by Julien Pivotto
Observing the HashiCorp Ecosystem From PrometheusObserving the HashiCorp Ecosystem From Prometheus
Observing the HashiCorp Ecosystem From Prometheus
Julien Pivotto37 views
Monitoring in a fast-changing world with Prometheus by Julien Pivotto
Monitoring in a fast-changing world with PrometheusMonitoring in a fast-changing world with Prometheus
Monitoring in a fast-changing world with Prometheus
Julien Pivotto33 views
5 tips for Prometheus Service Discovery by Julien Pivotto
5 tips for Prometheus Service Discovery5 tips for Prometheus Service Discovery
5 tips for Prometheus Service Discovery
Julien Pivotto38 views
Prometheus and TLS - an Introduction by Julien Pivotto
Prometheus and TLS - an IntroductionPrometheus and TLS - an Introduction
Prometheus and TLS - an Introduction
Julien Pivotto15 views
HAProxy as Egress Controller by Julien Pivotto
HAProxy as Egress ControllerHAProxy as Egress Controller
HAProxy as Egress Controller
Julien Pivotto2.9K views
Improved alerting with Prometheus and Alertmanager by Julien Pivotto
Improved alerting with Prometheus and AlertmanagerImproved alerting with Prometheus and Alertmanager
Improved alerting with Prometheus and Alertmanager
Julien Pivotto4.5K views
SIngle Sign On with Keycloak by Julien Pivotto
SIngle Sign On with KeycloakSIngle Sign On with Keycloak
SIngle Sign On with Keycloak
Julien Pivotto10K views
Monitoring as an entry point for collaboration by Julien Pivotto
Monitoring as an entry point for collaborationMonitoring as an entry point for collaboration
Monitoring as an entry point for collaboration
Julien Pivotto1.3K views
Monitor your CentOS stack with Prometheus by Julien Pivotto
Monitor your CentOS stack with PrometheusMonitor your CentOS stack with Prometheus
Monitor your CentOS stack with Prometheus
Julien Pivotto712 views
Monitor your CentOS stack with Prometheus by Julien Pivotto
Monitor your CentOS stack with PrometheusMonitor your CentOS stack with Prometheus
Monitor your CentOS stack with Prometheus
Julien Pivotto704 views

Recently uploaded

Webinar : Desperately Seeking Transformation - Part 2: Insights from leading... by
Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading...The Digital Insurer
40 views52 slides
Ransomware is Knocking your Door_Final.pdf by
Ransomware is Knocking your Door_Final.pdfRansomware is Knocking your Door_Final.pdf
Ransomware is Knocking your Door_Final.pdfSecurity Bootcamp
81 views46 slides
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue by
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlueMigrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlueShapeBlue
147 views20 slides
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ... by
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...ShapeBlue
121 views15 slides
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...ShapeBlue
128 views20 slides
Microsoft Power Platform.pptx by
Microsoft Power Platform.pptxMicrosoft Power Platform.pptx
Microsoft Power Platform.pptxUni Systems S.M.S.A.
74 views38 slides

Recently uploaded(20)

Webinar : Desperately Seeking Transformation - Part 2: Insights from leading... by The Digital Insurer
Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading...
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue by ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlueMigrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
ShapeBlue147 views
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ... by ShapeBlue
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
ShapeBlue121 views
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by ShapeBlue
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
ShapeBlue128 views
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT by ShapeBlue
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBITUpdates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT
ShapeBlue138 views
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online by ShapeBlue
KVM Security Groups Under the Hood - Wido den Hollander - Your.OnlineKVM Security Groups Under the Hood - Wido den Hollander - Your.Online
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online
ShapeBlue154 views
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R... by ShapeBlue
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
ShapeBlue105 views
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit... by ShapeBlue
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
ShapeBlue86 views
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue by ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlueVNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
ShapeBlue134 views
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T by ShapeBlue
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TCloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
ShapeBlue81 views
The Power of Heat Decarbonisation Plans in the Built Environment by IES VE
The Power of Heat Decarbonisation Plans in the Built EnvironmentThe Power of Heat Decarbonisation Plans in the Built Environment
The Power of Heat Decarbonisation Plans in the Built Environment
IES VE67 views
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue by ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueElevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
ShapeBlue149 views
Digital Personal Data Protection (DPDP) Practical Approach For CISOs by Priyanka Aash
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOs
Priyanka Aash103 views
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda... by ShapeBlue
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
ShapeBlue93 views
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ... by ShapeBlue
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
ShapeBlue114 views
Future of AR - Facebook Presentation by Rob McCarty
Future of AR - Facebook PresentationFuture of AR - Facebook Presentation
Future of AR - Facebook Presentation
Rob McCarty54 views

Building Jenkins Pipelines at Scale

  • 1. . . . Jenkins User Conference Europe . #jenkinsconf . Building Pipelines at Scale Julien Pivotto inuits.eu 25th June 2014
  • 2. . . . Jenkins User Conference Europe . #jenkinsconf . .. Building Pipelines at Scale Introduction Who’s who Pipelines Puppet Why How Conclusion Plugins Why How Conclusion
  • 3. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Who’s who . .. Julien Pivotto Open-Source Consultant at inuits.eu Linux Systems Administrator FOSS Defender for many years Œ DevOps Puppet user since 2011 Doing also some Ruby & Python
  • 4. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Who’s who . .. inuits Open-Source Consultancy company 50+ people in 4 countries (.be, .ua, .nl & .cz) Doing both Development & Systems Administration A lot of domains: Linux, Web, Databases, Monitoring… Early DevOps practitioners
  • 5. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Who’s who . .. MediaMosa Drupal-based Digital Asset Management system Open-source Store assets Transcode videos Create, extract and manage metadata using open standards: Dublin Core, Qualified DC, IEEE/LOM, CZP Webservice oriented
  • 6. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Who’s who . .. MediaSalsa: MediaMosa As a Service A turn-key MediaMosa solution A few environments: Dev/Uat/Prod environments Customer-specific environments One backend per environment Multiple frontends per backend = A lot of Drupal sites
  • 7. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Definition of pipelines .. A pipeline is a chain of Jenkins jobs that are run to fetch, compile, package, run tests and deploy an application (build pipeline plugin).
  • 8. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Definition of pipelines .. A pipeline is a chain of Jenkins jobs that are run to fetch, compile, package, run tests and deploy an application (build pipeline plugin). Pipeline vs large (or independent) jobs: Separation between different tasks Overview of tests, etc… Deployment depends on testing
  • 9. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Example: a puppet pipeline
  • 10. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Inside the pipeline Checkout Style Syntax Compile Unit tests Integration tests Packaging Regression tests Deployment / Delivery …
  • 11. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Ok, let’s use pipelines! Let’s make a pipeline for our puppet code
  • 12. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Ok, let’s use pipelines! Let’s make a pipeline for our puppet code …and one for our puppet code in dev environment …and one for our puppet code in uat environment
  • 13. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Ok, let’s use pipelines! Let’s make a pipeline for our puppet code …and one for our puppet code in dev environment …and one for our puppet code in uat environment Let’s make a pipeline for backend app
  • 14. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Ok, let’s use pipelines! Let’s make a pipeline for our puppet code …and one for our puppet code in dev environment …and one for our puppet code in uat environment Let’s make a pipeline for backend app …and one for backend app in dev environment …and one for backend app in uat environment
  • 15. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Ok, let’s use pipelines! Let’s make a pipeline for our puppet code …and one for our puppet code in dev environment …and one for our puppet code in uat environment Let’s make a pipeline for backend app …and one for backend app in dev environment …and one for backend app in uat environment Let’s make 5 pipelines for frontend apps …and 5 for frontends apps in dev environment …and 5 for frontends apps in uat environment
  • 16. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. How to scale? First attempt: clone jobs in the ui Dozens of jobs to clone & edit Human intervention = mistakes Second attempt: clone jobs xml files grep & cp & sed… Crappy bash scripting is crappy Mmmh…we need something else…
  • 17. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Let’s change the pipelines now!
  • 18. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Let’s change the pipelines now! click
  • 19. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Let’s change the pipelines now! click click
  • 20. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Let’s change the pipelines now! click click click click click
  • 21. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Let’s change the pipelines now! click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click
  • 22. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Let’s change the pipelines now! click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click click
  • 23. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet . Puppet
  • 24. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/Why . .. Infrastructure as Code Puppet/Chef/Cfengine/…same fight: Modelize your infrastructure Reproducable platforms Fast and reliable Disaster recovery for ”free”
  • 25. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/Why . .. What to puppetize Usually you puppetize: OS installation & configuration Apps installation & configuration DB installation & configuration
  • 26. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/Why . .. What to puppetize Usually you puppetize: OS installation & configuration Apps installation & configuration DB installation & configuration But you do not automate: Application data Are Jenkins jobs to be puppetized?
  • 27. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/Why . .. What to puppetize Usually you puppetize: OS installation & configuration Apps installation & configuration DB installation & configuration But you do not automate: Application data Are Jenkins jobs to be puppetized? …we tried…
  • 28. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/How . .. Modules structure Using the Jenkins upstream module And creating a specific jenkinsjobs module Difficult to share Mainly templates
  • 29. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/How . .. Structure of the module manifests job.pp (definition; file) packages.pp (packages needed by tests) dashboard.pp (augeas xml to modify jenkins config) pipeline/frontend.pp (definition; jobs) pipeline/backend.pp (definition; jobs) service.pp (exec to reload configuration)
  • 30. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/How . .. job.pp Takes a template as parameter Creates xml file and reload jenkins configuration It has a lot more arguments (project name, next job, etc…) Adds the job to the view (augeas)
  • 31. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/How . .. service.pp Reload the Jenkins service
  • 32. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/How . .. service.pp Reload the Jenkins service .. java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://127.0.0.1:8080/ reload-configuration --username "${username}" --password "${password}" It makes Jenkins unavailable
  • 33. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/How . .. pipeline.pp
  • 34. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/How . .. pipeline.pp .. Defaults for jobs . Jenkinsjobs::Job{ ensure => $ensure, git_repository => $git_repository, customer => $customer, assigned_node => $debian_slave, dashboard_view => $dashboard_view, package_name => "frontend-${customer}", vhost_docroot => $_vhost_docroot, custom_modules => 'sites/all/modules/custom', job_type => 'drupal', }
  • 35. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/How . .. pipeline.pp .. Defaults for promotions . Jenkinsjobs::Promotion{ ensure => $ensure, customer => $customer, assigned_node => $debian_slave, packaging_job => "frontend-build-${customer}", package_name => "frontend-${customer}", vhost_docroot => $_vhost_docroot, job_name => "frontend-promo-${customer}", }
  • 36. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/How . .. pipeline.pp .. Jobs definitions . jenkinsjobs::job{ "frontend-checkout-${customer}": job_template => 'jj/jobs/checkout.erb', next_job => "frontend-syntax-${customer}", start_pipeline => true, } jenkinsjobs::job{ "frontend-syntax-${customer}": job_template => 'jj/jobs/syntax.erb', next_job => "frontend-style-${customer}", }
  • 37. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/How . .. pipeline.pp .. Job with promotions . jenkinsjobs::job{ "frontend-promo-${customer}": job_template => 'jj/jobs/promote.erb', promotions => [ "deploy-${customer}-front-to-uat", "deploy-${customer}-front-to-prod", "deploy-${customer}-front-to-com-prod", ], }
  • 38. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/How . .. pipeline.pp .. Promotions . if 'uat' in $targets { jenkinsjobs::promotion { "deploy-${customer}-front-to-uat": template => 'jj/promotion/uat.erb', debian_repo => 'mediamosa-uat', targets => $targets['viaa-uat'], } }
  • 39. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/How . .. dashboard.pp .. Augeas example . augeas { "dashboard view $title": lens => 'Xml.lns', incl => '/var/lib/jenkins/config.xml', context => '/files/var/lib/jenkins/config.xml', changes => [ "set ${augeas_prefix}[last()+1]/owner/#attribute/class "hudson"", "set ${augeas_prefix}[last()]/owner/#attribute/reference "../../.."", "set ${augeas_prefix}[last()]/includeStdJobList/#text "true"", "set ${augeas_prefix}[last()]/name/#text "${title}"", ], onlyif => "match ${file_prefix}/hudson/views/*/name/#text[.="${title}"] size == 0", notify => Exec['reload-jenkins'], }
  • 40. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/Conclusion . .. Advantages of setting pipelines in Puppet Easy to deploy new pipelines
  • 41. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/Conclusion . .. Advantages of setting pipelines in Puppet Easy to deploy new pipelines Deploy pipelines in the same time as applications (exported resources) Define pipelines at the same place as applications (puppet)
  • 42. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/Conclusion . .. Advantages of setting pipelines in Puppet Easy to deploy new pipelines Deploy pipelines in the same time as applications (exported resources) Define pipelines at the same place as applications (puppet) Track history of pipeline changes
  • 43. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/Conclusion . .. Advantages of setting pipelines in Puppet Easy to deploy new pipelines Deploy pipelines in the same time as applications (exported resources) Define pipelines at the same place as applications (puppet) Track history of pipeline changes Having separate jobs for each project Reuse puppet template functionality
  • 44. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/Conclusion . .. Advantages of setting pipelines in Puppet Easy to deploy new pipelines Deploy pipelines in the same time as applications (exported resources) Define pipelines at the same place as applications (puppet) Track history of pipeline changes Having separate jobs for each project Reuse puppet template functionality Deploy new Jenkins server in minutes with all jobs Keep several Jenkins (test, prod) in sync
  • 45. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/Conclusion . .. Advantages of setting pipelines in Puppet Easy to deploy new pipelines Deploy pipelines in the same time as applications (exported resources) Define pipelines at the same place as applications (puppet) Track history of pipeline changes Having separate jobs for each project Reuse puppet template functionality Deploy new Jenkins server in minutes with all jobs Keep several Jenkins (test, prod) in sync Add ssh keys, git config, etc…in Puppet too Create test databases & vhosts in Puppet (exported resources)
  • 46. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/Conclusion . .. Disadvantages Play with Augeas & xml (wrong feeling) Makes Jenkins unavailable on changes Every small change ends up in Puppet
  • 47. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins . Plugins
  • 48. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/Why . .. A lighter approach: Jenkins plugins Remove the Puppet complexity Still having Pipelines in sync Minimize human intervention Speed-up the pipelines Do not restart Jenkins each time
  • 49. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/How . .. Plugin #1: Build flow Creates Pipelines Uses Groovy scripts Can run jobs in parallel Several other plugins do the same
  • 50. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/How .
  • 51. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/How . .. Build Flow: Groovy scripts .. Pipelines . build ( "syntax" ) build ( "lint" ) build ( "rspec" ) build ( "doc" ) build ( "package" ) build ( "release" )
  • 52. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/How . .. Build Flow: Groovy scripts .. Parallel jobs . parallel ( { build ( "syntax" ) }, { build ( "lint" ) }, { build ( "rspec" ) }, )
  • 53. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/How . .. Build Flow: Groovy scripts
  • 54. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/How . .. Build Flow: Groovy scripts .. Conditionals . if ( params["RELEASE"] == "true" ) { switch ( params["DEPLOY_METHOD"] ) { case "librarian": build ( "librarian" ) case "r10k": build ( "r10k" ) case "package": build ( "package" ) } }
  • 55. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/How . .. Build Flow: Groovy scripts
  • 56. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/How . .. Build Flow: Groovy scripts .. Build parameters . build ( "gitsubmodules", NAME: params["NAME"], ENVIRONMENT: params["ENVIRONMENT"] )
  • 57. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/How . .. Build Flow: Groovy scripts
  • 58. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/How . .. But also… A ”retry” function to try the failing jobs 2, 3, 4 time A ”rescue” function to launch a jobs if another fails The first job fails if one of the pipeline jobs fails! And a lot of other stuffs
  • 59. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/How . .. Plugin #2: Job Generator Jenkins jobs generator Creates jobs on the fly Jobs do not need to be created at the start of the (flow) pipeline Also updates existing jobs Allows to keep jobs per project (per project history and graphes) Takes special parameters
  • 60. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/How . .. Build Flow Plugin + Job generator One starting job (orchestrator) Calls some jobs or some generators, in parallel Ends with a nice, up-to-date Pipeline
  • 61. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/How . .. Plugin #3: JobConfigHistory Plugin Keeps track of the changes in the jobs Alternative to keep the xml in git
  • 62. . . . Jenkins User Conference Europe . #jenkinsconf . Conclusion . Conclusion
  • 63. . . . Jenkins User Conference Europe . #jenkinsconf . Conclusion . .. Other bottlenecks/problems at scale Load of the Jenkins server
  • 64. . . . Jenkins User Conference Europe . #jenkinsconf . Conclusion . .. Other bottlenecks/problems at scale Load of the Jenkins server: Think slaves
  • 65. . . . Jenkins User Conference Europe . #jenkinsconf . Conclusion . .. Other bottlenecks/problems at scale Load of the Jenkins server: Think slaves SCM pulling
  • 66. . . . Jenkins User Conference Europe . #jenkinsconf . Conclusion . .. Other bottlenecks/problems at scale Load of the Jenkins server: Think slaves SCM pulling: Think Gerrit or Trigger
  • 67. . . . Jenkins User Conference Europe . #jenkinsconf . Conclusion . .. Other bottlenecks/problems at scale Load of the Jenkins server: Think slaves SCM pulling: Think Gerrit or Trigger Jobs are slow
  • 68. . . . Jenkins User Conference Europe . #jenkinsconf . Conclusion . .. Other bottlenecks/problems at scale Load of the Jenkins server: Think slaves SCM pulling: Think Gerrit or Trigger Jobs are slow: Optimize, Divide them, Monitor them (graphite) Notifications
  • 69. . . . Jenkins User Conference Europe . #jenkinsconf . Conclusion . .. Other bottlenecks/problems at scale Load of the Jenkins server: Think slaves SCM pulling: Think Gerrit or Trigger Jobs are slow: Optimize, Divide them, Monitor them (graphite) Notifications: Think XMPP, IRC, mails, Gerrit…
  • 70. . . . Jenkins User Conference Europe . #jenkinsconf . Conclusion . .. Pipelines at scale… Two different approaches application-level infrastructure-level Pick the one you prefer (or invent your own) Do not hesitate to separate Jobs Monitor your jobs/pipelines (graphite)
  • 71. . . . Jenkins User Conference Europe . #jenkinsconf . Conclusion . Thank you! Thanks to my colleague @tomdevylder for the Build Flow slides
  • 72. . . . Jenkins User Conference Europe . #jenkinsconf . Conclusion . .. Contact Julien Pivotto julien@inuits.eu @roidelapluie Inuits BVBA Belgium +32 473 441 636 https://inuits.eu
  • 73. Jenkins User Conference Europe #jenkinsconf Corporate Community Thank You To Our Sponsors Platinum Gold Silver . . . Jenkins User Conference Europe . #jenkinsconf . #jenkinsconf