SlideShare a Scribd company logo
1 of 73
Download to read offline
.
.
.
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, Qualiļ¬ed 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-speciļ¬c environments
One backend per environment
Multiple frontends per backend
= A lot of Drupal sites
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Introduction/Pipelines
.
..
Deļ¬nition 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
.
..
Deļ¬nition 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 diļ¬€erent 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 ļ¬les
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 ļ¬ght:
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 & conļ¬guration
Apps installation & conļ¬guration
DB installation & conļ¬guration
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/Why
.
..
What to puppetize
Usually you puppetize:
OS installation & conļ¬guration
Apps installation & conļ¬guration
DB installation & conļ¬guration
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 & conļ¬guration
Apps installation & conļ¬guration
DB installation & conļ¬guration
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 speciļ¬c jenkinsjobs module
Diļ¬ƒcult to share
Mainly templates
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/How
.
..
Structure of the module
manifests
job.pp (deļ¬nition; ļ¬le)
packages.pp (packages needed by tests)
dashboard.pp (augeas xml to modify jenkins conļ¬g)
pipeline/frontend.pp (deļ¬nition; jobs)
pipeline/backend.pp (deļ¬nition; jobs)
service.pp (exec to reload conļ¬guration)
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Puppet/How
.
..
job.pp
Takes a template as parameter
Creates xml ļ¬le and reload jenkins conļ¬guration
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 deļ¬nitions
.
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)
Deļ¬ne 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)
Deļ¬ne 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)
Deļ¬ne 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)
Deļ¬ne 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)
Deļ¬ne 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 conļ¬g, 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 ļ¬‚ow
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 ļ¬rst job fails if one of the pipeline jobs fails!
And a lot of other stuļ¬€s
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Plugins/How
.
..
Plugin #2: Job Generator
Jenkins jobs generator
Creates jobs on the ļ¬‚y
Jobs do not need to be created at the start of the (ļ¬‚ow)
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: JobConļ¬gHistory 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)
Notiļ¬cations
.
.
.
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)
Notiļ¬cations: Think XMPP, IRC, mails, Gerritā€¦
.
.
.
Jenkins User Conference Europe
.
#jenkinsconf
.
Conclusion
.
..
Pipelines at scaleā€¦
Two diļ¬€erent 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

More Related Content

What's hot

Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014CloudBees
Ā 
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
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
Ā 
Testing with Docker
Testing with DockerTesting with Docker
Testing with Dockertoffermann
Ā 
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
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
Ā 
JUC Europe 2015: Scaling Your Jenkins Master with Docker
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
Ā 
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
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
Ā 
Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Michal Ziarnik
Ā 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
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 ThailandTroublemaker Khunpech
Ā 
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"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"CloudBees
Ā 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins UsersJules Pierre-Louis
Ā 
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...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Docker, Inc.
Ā 
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
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
Ā 
Jenkins days workshop pipelines - Eric Long
Jenkins days workshop  pipelines - Eric LongJenkins days workshop  pipelines - Eric Long
Jenkins days workshop pipelines - Eric Longericlongtx
Ā 
Continuous Delivery Pipeline with Docker and Jenkins
Continuous Delivery Pipeline with Docker and JenkinsContinuous Delivery Pipeline with Docker and Jenkins
Continuous Delivery Pipeline with Docker and JenkinsCamilo Ribeiro
Ā 
Letā€™s start Continuous Integration with jenkins
Letā€™s start Continuous Integration with jenkinsLetā€™s start Continuous Integration with jenkins
Letā€™s start Continuous Integration with jenkinsTomohide Kakeya
Ā 
Automate App Container Delivery with CI/CD and DevOps
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 DevOpsDaniel Oh
Ā 
JUC Europe 2015: Plugin Development with Gradle and Groovy
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
Ā 
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
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 RetailersCloudBees
Ā 
Continuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL ServerContinuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL ServerChris Adkin
Ā 

What's hot (20)

Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014
Ā 
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
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
Ā 
Testing with Docker
Testing with DockerTesting with Docker
Testing with Docker
Ā 
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
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
Ā 
JUC Europe 2015: Scaling Your Jenkins Master with Docker
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
Ā 
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
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
Ā 
Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2
Ā 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
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"
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"
Ā 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users
Ā 
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...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Ā 
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
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
Ā 
Jenkins days workshop pipelines - Eric Long
Jenkins days workshop  pipelines - Eric LongJenkins days workshop  pipelines - Eric Long
Jenkins days workshop pipelines - Eric Long
Ā 
Continuous Delivery Pipeline with Docker and Jenkins
Continuous Delivery Pipeline with Docker and JenkinsContinuous Delivery Pipeline with Docker and Jenkins
Continuous Delivery Pipeline with Docker and Jenkins
Ā 
Letā€™s start Continuous Integration with jenkins
Letā€™s start Continuous Integration with jenkinsLetā€™s start Continuous Integration with jenkins
Letā€™s start Continuous Integration with jenkins
Ā 
JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...
JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...
JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...
Ā 
Automate App Container Delivery with CI/CD and DevOps
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
Ā 
JUC Europe 2015: Plugin Development with Gradle and Groovy
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
Ā 
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
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
Ā 
Continuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL ServerContinuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL Server
Ā 

Viewers also liked

Pipeline: Continuous Delivery as Code in Jenkins 2.0
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
Ā 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins PipelinesSteffen Gebert
Ā 
Jenkins Pipelines
Jenkins PipelinesJenkins Pipelines
Jenkins PipelinesSteffen Gebert
Ā 
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
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
Ā 
Jenkins scaling best practices
Jenkins scaling best practicesJenkins scaling best practices
Jenkins scaling best practicesHenry McBride
Ā 
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...
Introduction to Amazon EC2 Container Service and setting up build pipeline wi...Swapnil Dahiphale
Ā 
Adapting Deployment Pipelines for Complex Applications
Adapting Deployment Pipelines for Complex ApplicationsAdapting Deployment Pipelines for Complex Applications
Adapting Deployment Pipelines for Complex ApplicationsIBM UrbanCode Products
Ā 
Docker Swarm scheduling in 1.12
Docker Swarm scheduling in 1.12Docker Swarm scheduling in 1.12
Docker Swarm scheduling in 1.12Atharva Chauthaiwale
Ā 
Learn Dashing Widget in 90 minutes
Learn Dashing Widget in 90 minutesLearn Dashing Widget in 90 minutes
Learn Dashing Widget in 90 minutesLarry Cai
Ā 
JCConf2016 Jenkins Pipeline
JCConf2016 Jenkins PipelineJCConf2016 Jenkins Pipeline
JCConf2016 Jenkins PipelineChing Yi Chan
Ā 
Automated Testing Environment by Bugzilla, Testopia and Jenkins
Automated Testing Environment by Bugzilla, Testopia and JenkinsAutomated Testing Environment by Bugzilla, Testopia and Jenkins
Automated Testing Environment by Bugzilla, Testopia and Jenkinswalkerchang
Ā 
SCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scalingSCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scalingStanislav Osipov
Ā 
JavaScript + Jenkins = Winning!
JavaScript + Jenkins = Winning!JavaScript + Jenkins = Winning!
JavaScript + Jenkins = Winning!Eric Wendelin
Ā 
Continuous Integration With Hudson (and Jenkins)
Continuous Integration With Hudson (and Jenkins)Continuous Integration With Hudson (and Jenkins)
Continuous Integration With Hudson (and Jenkins)Carlo Bonamico
Ā 
Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf
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 - jbcnconfJulia Mateo
Ā 
Jenkins 2.0 (ę—„ęœ¬čŖž)
Jenkins 2.0 (ę—„ęœ¬čŖž)Jenkins 2.0 (ę—„ęœ¬čŖž)
Jenkins 2.0 (ę—„ęœ¬čŖž)Kohsuke Kawaguchi
Ā 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryVirendra Bhalothia
Ā 
Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Tracy Kennedy
Ā 
Jenkins and Chef: Infrastructure CI and Automated Deployment
Jenkins and Chef: Infrastructure CI and Automated DeploymentJenkins and Chef: Infrastructure CI and Automated Deployment
Jenkins and Chef: Infrastructure CI and Automated DeploymentDan Stine
Ā 

Viewers also liked (20)

Pipeline: Continuous Delivery as Code in Jenkins 2.0
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
Ā 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines
Ā 
Jenkins Pipelines
Jenkins PipelinesJenkins Pipelines
Jenkins Pipelines
Ā 
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Ā 
Jenkins scaling best practices
Jenkins scaling best practicesJenkins scaling best practices
Jenkins scaling best practices
Ā 
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...
Introduction to Amazon EC2 Container Service and setting up build pipeline wi...
Ā 
Adapting Deployment Pipelines for Complex Applications
Adapting Deployment Pipelines for Complex ApplicationsAdapting Deployment Pipelines for Complex Applications
Adapting Deployment Pipelines for Complex Applications
Ā 
Docker Swarm scheduling in 1.12
Docker Swarm scheduling in 1.12Docker Swarm scheduling in 1.12
Docker Swarm scheduling in 1.12
Ā 
Learn Dashing Widget in 90 minutes
Learn Dashing Widget in 90 minutesLearn Dashing Widget in 90 minutes
Learn Dashing Widget in 90 minutes
Ā 
JCConf2016 Jenkins Pipeline
JCConf2016 Jenkins PipelineJCConf2016 Jenkins Pipeline
JCConf2016 Jenkins Pipeline
Ā 
Automated Testing Environment by Bugzilla, Testopia and Jenkins
Automated Testing Environment by Bugzilla, Testopia and JenkinsAutomated Testing Environment by Bugzilla, Testopia and Jenkins
Automated Testing Environment by Bugzilla, Testopia and Jenkins
Ā 
SCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scalingSCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scaling
Ā 
JavaScript + Jenkins = Winning!
JavaScript + Jenkins = Winning!JavaScript + Jenkins = Winning!
JavaScript + Jenkins = Winning!
Ā 
Jenkins-CI
Jenkins-CIJenkins-CI
Jenkins-CI
Ā 
Continuous Integration With Hudson (and Jenkins)
Continuous Integration With Hudson (and Jenkins)Continuous Integration With Hudson (and Jenkins)
Continuous Integration With Hudson (and Jenkins)
Ā 
Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf
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
Ā 
Jenkins 2.0 (ę—„ęœ¬čŖž)
Jenkins 2.0 (ę—„ęœ¬čŖž)Jenkins 2.0 (ę—„ęœ¬čŖž)
Jenkins 2.0 (ę—„ęœ¬čŖž)
Ā 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous Delivery
Ā 
Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)
Ā 
Jenkins and Chef: Infrastructure CI and Automated Deployment
Jenkins and Chef: Infrastructure CI and Automated DeploymentJenkins and Chef: Infrastructure CI and Automated Deployment
Jenkins and Chef: Infrastructure CI and Automated Deployment
Ā 

Similar to Building Jenkins Pipelines at Scale

Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Lorenzo Miniero
Ā 
Jenkins User Conference: Building Your Continuous Delivery Toolkit
Jenkins User Conference: Building Your Continuous Delivery ToolkitJenkins User Conference: Building Your Continuous Delivery Toolkit
Jenkins User Conference: Building Your Continuous Delivery ToolkitXebiaLabs
Ā 
Going literate in Amadeus JUC Berlin June 25th 2014
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
Ā 
Building your Continuous Delivery Toolkit @ JUC SF 2014
Building your Continuous Delivery Toolkit @ JUC SF 2014Building your Continuous Delivery Toolkit @ JUC SF 2014
Building your Continuous Delivery Toolkit @ JUC SF 2014XebiaLabs
Ā 
Lean Engineering: How to make Engineering a full Lean UX partner
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
Ā 
Getting to push_button_deploys
Getting to push_button_deploysGetting to push_button_deploys
Getting to push_button_deploysChristian Mague
Ā 
Juc paris olivier lamy talk
Juc paris olivier lamy talkJuc paris olivier lamy talk
Juc paris olivier lamy talkOlivier Lamy
Ā 
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...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...CloudBees
Ā 
Jenkins Made Easy - Jenkins User Conference 2015 at London
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 LondonNobuaki Ogawa
Ā 
Configuration As Code: The Job DSL Plugin
Configuration As Code: The Job DSL PluginConfiguration As Code: The Job DSL Plugin
Configuration As Code: The Job DSL PluginDaniel Spilker
Ā 
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!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Andrew Bayer
Ā 
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
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 codeDamien Duportal
Ā 
Symfony4 - A new way of developing web applications
Symfony4 - A new way of developing web applicationsSymfony4 - A new way of developing web applications
Symfony4 - A new way of developing web applicationsAntonio Peric-Mazar
Ā 
Jenkins User Conference 2014
Jenkins User Conference 2014Jenkins User Conference 2014
Jenkins User Conference 2014Dan Cundiff
Ā 
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!
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!Linaro
Ā 
Wds leanengineering-141103233017-conversion-gate02
Wds leanengineering-141103233017-conversion-gate02Wds leanengineering-141103233017-conversion-gate02
Wds leanengineering-141103233017-conversion-gate02Shivam Prajapati
Ā 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorialHarikaReddy115
Ā 
JUC Europe 2015: A Reproducible Build Environment with Jenkins
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 JenkinsCloudBees
Ā 
DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1Docker, Inc.
Ā 
Symfony4: A new way to develop applications | Antonio Peric | CODEiD
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 | CODEiDCODEiD PHP Community
Ā 

Similar to Building Jenkins Pipelines at Scale (20)

Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020
Ā 
Jenkins User Conference: Building Your Continuous Delivery Toolkit
Jenkins User Conference: Building Your Continuous Delivery ToolkitJenkins User Conference: Building Your Continuous Delivery Toolkit
Jenkins User Conference: Building Your Continuous Delivery Toolkit
Ā 
Going literate in Amadeus JUC Berlin June 25th 2014
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
Ā 
Building your Continuous Delivery Toolkit @ JUC SF 2014
Building your Continuous Delivery Toolkit @ JUC SF 2014Building your Continuous Delivery Toolkit @ JUC SF 2014
Building your Continuous Delivery Toolkit @ JUC SF 2014
Ā 
Lean Engineering: How to make Engineering a full Lean UX partner
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
Ā 
Getting to push_button_deploys
Getting to push_button_deploysGetting to push_button_deploys
Getting to push_button_deploys
Ā 
Juc paris olivier lamy talk
Juc paris olivier lamy talkJuc paris olivier lamy talk
Juc paris olivier lamy talk
Ā 
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...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
Ā 
Jenkins Made Easy - Jenkins User Conference 2015 at London
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
Ā 
Configuration As Code: The Job DSL Plugin
Configuration As Code: The Job DSL PluginConfiguration As Code: The Job DSL Plugin
Configuration As Code: The Job DSL Plugin
Ā 
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!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Ā 
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
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
Ā 
Symfony4 - A new way of developing web applications
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
Jenkins User Conference 2014Jenkins User Conference 2014
Jenkins User Conference 2014
Ā 
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!
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!
Ā 
Wds leanengineering-141103233017-conversion-gate02
Wds leanengineering-141103233017-conversion-gate02Wds leanengineering-141103233017-conversion-gate02
Wds leanengineering-141103233017-conversion-gate02
Ā 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
Ā 
JUC Europe 2015: A Reproducible Build Environment with Jenkins
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
Ā 
DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1
Ā 
Symfony4: A new way to develop applications | Antonio Peric | CODEiD
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
The O11y ToolkitThe O11y Toolkit
The O11y ToolkitJulien Pivotto
Ā 
What's New in Prometheus and Its Ecosystem
What's New in Prometheus and Its EcosystemWhat's New in Prometheus and Its Ecosystem
What's New in Prometheus and Its EcosystemJulien Pivotto
Ā 
Prometheus: What is is, what is new, what is coming
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
Ā 
What's new in Prometheus?
What's new in Prometheus?What's new in Prometheus?
What's new in Prometheus?Julien Pivotto
Ā 
Introduction to Grafana Loki
Introduction to Grafana LokiIntroduction to Grafana Loki
Introduction to Grafana LokiJulien Pivotto
Ā 
Why you should revisit mgmt
Why you should revisit mgmtWhy you should revisit mgmt
Why you should revisit mgmtJulien Pivotto
Ā 
Observing the HashiCorp Ecosystem From Prometheus
Observing the HashiCorp Ecosystem From PrometheusObserving the HashiCorp Ecosystem From Prometheus
Observing the HashiCorp Ecosystem From PrometheusJulien Pivotto
Ā 
Monitoring in a fast-changing world with Prometheus
Monitoring in a fast-changing world with PrometheusMonitoring in a fast-changing world with Prometheus
Monitoring in a fast-changing world with PrometheusJulien Pivotto
Ā 
5 tips for Prometheus Service Discovery
5 tips for Prometheus Service Discovery5 tips for Prometheus Service Discovery
5 tips for Prometheus Service DiscoveryJulien Pivotto
Ā 
Prometheus and TLS - an Introduction
Prometheus and TLS - an IntroductionPrometheus and TLS - an Introduction
Prometheus and TLS - an IntroductionJulien Pivotto
Ā 
Powerful graphs in Grafana
Powerful graphs in GrafanaPowerful graphs in Grafana
Powerful graphs in GrafanaJulien Pivotto
Ā 
HAProxy as Egress Controller
HAProxy as Egress ControllerHAProxy as Egress Controller
HAProxy as Egress ControllerJulien Pivotto
Ā 
Improved alerting with Prometheus and Alertmanager
Improved alerting with Prometheus and AlertmanagerImproved alerting with Prometheus and Alertmanager
Improved alerting with Prometheus and AlertmanagerJulien Pivotto
Ā 
SIngle Sign On with Keycloak
SIngle Sign On with KeycloakSIngle Sign On with Keycloak
SIngle Sign On with KeycloakJulien Pivotto
Ā 
Monitoring as an entry point for collaboration
Monitoring as an entry point for collaborationMonitoring as an entry point for collaboration
Monitoring as an entry point for collaborationJulien Pivotto
Ā 
Incident Resolution as Code
Incident Resolution as CodeIncident Resolution as Code
Incident Resolution as CodeJulien Pivotto
Ā 
Monitor your CentOS stack with Prometheus
Monitor your CentOS stack with PrometheusMonitor your CentOS stack with Prometheus
Monitor your CentOS stack with PrometheusJulien Pivotto
Ā 
Monitor your CentOS stack with Prometheus
Monitor your CentOS stack with PrometheusMonitor your CentOS stack with Prometheus
Monitor your CentOS stack with PrometheusJulien Pivotto
Ā 
An introduction to Ansible
An introduction to AnsibleAn introduction to Ansible
An introduction to AnsibleJulien Pivotto
Ā 

More from Julien Pivotto (20)

The O11y Toolkit
The O11y ToolkitThe O11y Toolkit
The O11y Toolkit
Ā 
What's New in Prometheus and Its Ecosystem
What's New in Prometheus and Its EcosystemWhat's New in Prometheus and Its Ecosystem
What's New in Prometheus and Its Ecosystem
Ā 
Prometheus: What is is, what is new, what is coming
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
Ā 
What's new in Prometheus?
What's new in Prometheus?What's new in Prometheus?
What's new in Prometheus?
Ā 
Introduction to Grafana Loki
Introduction to Grafana LokiIntroduction to Grafana Loki
Introduction to Grafana Loki
Ā 
Why you should revisit mgmt
Why you should revisit mgmtWhy you should revisit mgmt
Why you should revisit mgmt
Ā 
Observing the HashiCorp Ecosystem From Prometheus
Observing the HashiCorp Ecosystem From PrometheusObserving the HashiCorp Ecosystem From Prometheus
Observing the HashiCorp Ecosystem From Prometheus
Ā 
Monitoring in a fast-changing world with Prometheus
Monitoring in a fast-changing world with PrometheusMonitoring in a fast-changing world with Prometheus
Monitoring in a fast-changing world with Prometheus
Ā 
5 tips for Prometheus Service Discovery
5 tips for Prometheus Service Discovery5 tips for Prometheus Service Discovery
5 tips for Prometheus Service Discovery
Ā 
Prometheus and TLS - an Introduction
Prometheus and TLS - an IntroductionPrometheus and TLS - an Introduction
Prometheus and TLS - an Introduction
Ā 
Powerful graphs in Grafana
Powerful graphs in GrafanaPowerful graphs in Grafana
Powerful graphs in Grafana
Ā 
YAML Magic
YAML MagicYAML Magic
YAML Magic
Ā 
HAProxy as Egress Controller
HAProxy as Egress ControllerHAProxy as Egress Controller
HAProxy as Egress Controller
Ā 
Improved alerting with Prometheus and Alertmanager
Improved alerting with Prometheus and AlertmanagerImproved alerting with Prometheus and Alertmanager
Improved alerting with Prometheus and Alertmanager
Ā 
SIngle Sign On with Keycloak
SIngle Sign On with KeycloakSIngle Sign On with Keycloak
SIngle Sign On with Keycloak
Ā 
Monitoring as an entry point for collaboration
Monitoring as an entry point for collaborationMonitoring as an entry point for collaboration
Monitoring as an entry point for collaboration
Ā 
Incident Resolution as Code
Incident Resolution as CodeIncident Resolution as Code
Incident Resolution as Code
Ā 
Monitor your CentOS stack with Prometheus
Monitor your CentOS stack with PrometheusMonitor your CentOS stack with Prometheus
Monitor your CentOS stack with Prometheus
Ā 
Monitor your CentOS stack with Prometheus
Monitor your CentOS stack with PrometheusMonitor your CentOS stack with Prometheus
Monitor your CentOS stack with Prometheus
Ā 
An introduction to Ansible
An introduction to AnsibleAn introduction to Ansible
An introduction to Ansible
Ā 

Recently uploaded

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
Ā 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
Ā 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
Ā 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
Ā 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...gurkirankumar98700
Ā 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
Ā 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
Ā 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
Ā 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
Ā 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
Ā 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
Ā 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
Ā 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
Ā 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
Ā 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
Ā 
šŸ¬ The future of MySQL is Postgres šŸ˜
šŸ¬  The future of MySQL is Postgres   šŸ˜šŸ¬  The future of MySQL is Postgres   šŸ˜
šŸ¬ The future of MySQL is Postgres šŸ˜RTylerCroy
Ā 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
Ā 

Recently uploaded (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Ā 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Ā 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
Ā 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Ā 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Ā 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
Ā 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
Ā 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Ā 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Ā 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Ā 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Ā 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
Ā 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Ā 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
Ā 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Ā 
šŸ¬ The future of MySQL is Postgres šŸ˜
šŸ¬  The future of MySQL is Postgres   šŸ˜šŸ¬  The future of MySQL is Postgres   šŸ˜
šŸ¬ The future of MySQL is Postgres šŸ˜
Ā 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
Ā 

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, Qualiļ¬ed 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-speciļ¬c environments One backend per environment Multiple frontends per backend = A lot of Drupal sites
  • 7. . . . Jenkins User Conference Europe . #jenkinsconf . Introduction/Pipelines . .. Deļ¬nition 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 . .. Deļ¬nition 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 diļ¬€erent 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 ļ¬les 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 ļ¬ght: 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 & conļ¬guration Apps installation & conļ¬guration DB installation & conļ¬guration
  • 26. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/Why . .. What to puppetize Usually you puppetize: OS installation & conļ¬guration Apps installation & conļ¬guration DB installation & conļ¬guration 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 & conļ¬guration Apps installation & conļ¬guration DB installation & conļ¬guration 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 speciļ¬c jenkinsjobs module Diļ¬ƒcult to share Mainly templates
  • 29. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/How . .. Structure of the module manifests job.pp (deļ¬nition; ļ¬le) packages.pp (packages needed by tests) dashboard.pp (augeas xml to modify jenkins conļ¬g) pipeline/frontend.pp (deļ¬nition; jobs) pipeline/backend.pp (deļ¬nition; jobs) service.pp (exec to reload conļ¬guration)
  • 30. . . . Jenkins User Conference Europe . #jenkinsconf . Puppet/How . .. job.pp Takes a template as parameter Creates xml ļ¬le and reload jenkins conļ¬guration 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 deļ¬nitions . 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) Deļ¬ne 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) Deļ¬ne 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) Deļ¬ne 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) Deļ¬ne 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) Deļ¬ne 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 conļ¬g, 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 ļ¬‚ow 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 ļ¬rst job fails if one of the pipeline jobs fails! And a lot of other stuļ¬€s
  • 59. . . . Jenkins User Conference Europe . #jenkinsconf . Plugins/How . .. Plugin #2: Job Generator Jenkins jobs generator Creates jobs on the ļ¬‚y Jobs do not need to be created at the start of the (ļ¬‚ow) 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: JobConļ¬gHistory 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) Notiļ¬cations
  • 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) Notiļ¬cations: Think XMPP, IRC, mails, Gerritā€¦
  • 70. . . . Jenkins User Conference Europe . #jenkinsconf . Conclusion . .. Pipelines at scaleā€¦ Two diļ¬€erent 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