SlideShare a Scribd company logo
1 of 53
Download to read offline
©2010 CloudBees, Inc. All Rights Reserved©2010 CloudBees, Inc. All Rights Reserved
Tap into the Power of Slaves with Jenkins
Kohsuke Kawaguchi
©2010 CloudBees, Inc. All Rights Reserved 2©2010 CloudBees, Inc. All Rights Reserved
Have You Met Jenkins?h"p://jenkins-­‐ci.org/	
  	
  
©2010 CloudBees, Inc. All Rights Reserved 3©2010 CloudBees, Inc. All Rights Reserved
x	
  64,000	
  
©2010 CloudBees, Inc. All Rights Reserved 4©2010 CloudBees, Inc. All Rights Reserved
©2010 CloudBees, Inc. All Rights Reserved 5©2010 CloudBees, Inc. All Rights Reserved
x	
  700	
  
©2010 CloudBees, Inc. All Rights Reserved 6©2010 CloudBees, Inc. All Rights Reserved
©2010 CloudBees, Inc. All Rights Reserved 7©2010 CloudBees, Inc. All Rights Reserved
©2010 CloudBees, Inc. All Rights Reserved 8©2010 CloudBees, Inc. All Rights Reserved
©2010 CloudBees, Inc. All Rights Reserved 9©2010 CloudBees, Inc. All Rights Reserved
©2010 CloudBees, Inc. All Rights Reserved 10©2010 CloudBees, Inc. All Rights Reserved
©2010 CloudBees, Inc. All Rights Reserved 11©2010 CloudBees, Inc. All Rights Reserved
©	
  Kurt	
  Löwenstein	
  EducaConal	
  Center	
  InternaConal	
  Team	
  
h"p://commons.wikimedia.org/wiki/File:DiscriminaCon-­‐Diversity-­‐03.jpg	
  
CreaCve	
  Commons	
  A"ribuCon	
  2.0	
  Generic	
  
©2010 CloudBees, Inc. All Rights Reserved
Demo
Really, We Made It Easy!
©2010 CloudBees, Inc. All Rights Reserved 13©2010 CloudBees, Inc. All Rights Reserved
•  Master
–  Serves HTTP requests
–  Stores all important
info
•  Slaves
–  280KB single jar
–  Assumed to be
unreliable
–  Scale to at least 100
Distributed builds with Jenkins
Master	
  
slave1	
  
slave2	
  
slave3	
  
slave4	
  
slave5	
  
slave6	
  
slave7	
  
slave8	
  
©2010 CloudBees, Inc. All Rights Reserved 14©2010 CloudBees, Inc. All Rights Reserved
Lots More Ways to Deploy Slaves
•  Via DCOM
©2010 CloudBees, Inc. All Rights Reserved 15©2010 CloudBees, Inc. All Rights Reserved
Lots More Way To Deploy Slaves
•  Good old shell scripting
$ java -jar slave.jar -jnlpUrl URL
©2010 CloudBees, Inc. All Rights Reserved 16©2010 CloudBees, Inc. All Rights Reserved
How Flexible Does It Get?
•  Slave agent is a little Java program
– Runs locally on the machine that it controls
– Access files, fork processes, etc., on behalf of
master
•  Communication with master
– Just needs a bi-di byte stream
•  No shared file system, no network
topology constraints, etc
©2010 CloudBees, Inc. All Rights Reserved 17©2010 CloudBees, Inc. All Rights Reserved
Static Virtual Machines As Build Slaves
•  Allocate lots of identical VMs
– Better consistency, lower overhead
•  Curve up 1 big machine to small VMs
•  Throw away > maintain
©2010 CloudBees, Inc. All Rights Reserved 18©2010 CloudBees, Inc. All Rights Reserved
Labels
•  Refer to slaves
but not by name
Name:	
  alpha	
  
Label:	
  windows	
  32bit	
  
Name:	
  bravo	
  
Label:	
  linux	
  32bit	
  
Name:	
  charlie	
  
Label:	
  linux	
  64bit	
  
©2010 CloudBees, Inc. All Rights Reserved 19©2010 CloudBees, Inc. All Rights Reserved
Labels
Name:	
  alpha	
  
Label:	
  windows	
  32bit	
  
Name:	
  bravo	
  
Label:	
  linux	
  32bit	
  
Name:	
  charlie	
  
Label:	
  linux	
  64bit	
  
This	
  job	
  needs	
  to	
  run	
  
on	
  “linux”	
  
©2010 CloudBees, Inc. All Rights Reserved 20©2010 CloudBees, Inc. All Rights Reserved
Labels
Name:	
  alpha	
  
Label:	
  windows	
  32bit	
  
Name:	
  bravo	
  
Label:	
  linux	
  32bit	
  
Name:	
  charlie	
  
Label:	
  linux	
  64bit	
  
This	
  job	
  needs	
  to	
  run	
  
on	
  “linux	
  &&	
  32bit”	
  
©2010 CloudBees, Inc. All Rights Reserved 21©2010 CloudBees, Inc. All Rights Reserved
More Label Benefits
•  Labels can be anything
– Geographic locations
– Availability of proprietary software installed
•  Better resource utilization
– Jenkins have maximum freedom
•  Resilient to node addition/removal
– Treat servers like livestocks, not like pets
©2010 CloudBees, Inc. All Rights Reserved 22©2010 CloudBees, Inc. All Rights Reserved
Labels	
  
↓	
  
ElasCc	
  Slaves	
  
©2010 CloudBees, Inc. All Rights Reserved 23©2010 CloudBees, Inc. All Rights Reserved
Tracking demand for specific label
©2010 CloudBees, Inc. All Rights Reserved 24©2010 CloudBees, Inc. All Rights Reserved
Then Adjust Capacity based on it
©2010 CloudBees, Inc. All Rights Reserved 25©2010 CloudBees, Inc. All Rights Reserved
How?
•  EC2 Plugin
– Longest history, most popular
•  JClouds plugin
– For OpenStack & CloudStack users, mainly
– Unfortunate name, if you ask me
•  Common to both
– Multiple image types
©2010 CloudBees, Inc. All Rights Reserved 26©2010 CloudBees, Inc. All Rights Reserved
Interesting Use Cases Worth Noting
•  Single-use slaves (JClouds)
– Used once & destroyed
•  Static but utility-priced slaves (EC2)
– Jenkins stops idle slaves to reduce $$$
– Great for infrequent use
•  Coming soon: spot instances (EC2)
©2010 CloudBees, Inc. All Rights Reserved 27©2010 CloudBees, Inc. All Rights Reserved
CloudBees DEV@cloud
•  Completely elastic slaves
•  Keeps your warm workspace
•  Per-minute pricing, not per-hour
©2010 CloudBees, Inc. All Rights Reserved
Now that we have more slaves…
#1: parallel test execution
©2010 CloudBees, Inc. All Rights Reserved 29©2010 CloudBees, Inc. All Rights Reserved
Running Tests in Parallel
Why?
©2010 CloudBees, Inc. All Rights Reserved 30©2010 CloudBees, Inc. All Rights Reserved
Pre-requisites
Build script that supports test exclusion file
©2010 CloudBees, Inc. All Rights Reserved 31©2010 CloudBees, Inc. All Rights Reserved
How It Works
Test	
  Group	
  #1	
   Test	
  Group	
  #2	
   Test	
  Group	
  #3	
  
©2010 CloudBees, Inc. All Rights Reserved 32©2010 CloudBees, Inc. All Rights Reserved
How It Works
foo	
  #10	
   Test	
  Group	
  #1	
  
foo	
  #11	
   Test	
  Group	
  #2	
  
foo	
  #12	
   Test	
  Goup	
  #3	
  
©2010 CloudBees, Inc. All Rights Reserved
Demo
©2010 CloudBees, Inc. All Rights Reserved 34©2010 CloudBees, Inc. All Rights Reserved
For Maven
•  Trick
– Turn a build into a Maven repository
– Maven profiles for controlling what to run
when
Build	
  
Parallel	
  
Test	
  
Test	
  Group	
  #1	
  
Test	
  Group	
  #2	
  
Test	
  Group	
  #3	
  
©2010 CloudBees, Inc. All Rights Reserved
Demo
©2010 CloudBees, Inc. All Rights Reserved
Now that we have more slaves…
#2: activities than span multiple computers
©2010 CloudBees, Inc. All Rights Reserved 37©2010 CloudBees, Inc. All Rights Reserved
Build Flow Plugin
•  Groovy DSL for coordinating job
executions
– High-level primitives
– Ability to define abstractions
b	
  =	
  build(“acme-­‐build”)	
  
guard	
  {	
  
	
  parallel	
  (	
  
	
   	
  {	
  build(“acme-­‐test1”,	
  param1:b.number)	
  },	
  
	
   	
  {	
  build(“acme-­‐test2”,	
  param1:b.number)	
  }	
  
	
  )	
  
}	
  rescue	
  {	
  
	
  build(“acme-­‐teardown”)	
  
}	
  
©2010 CloudBees, Inc. All Rights Reserved 38©2010 CloudBees, Inc. All Rights Reserved
•  Embed BPMN workflow engine
in Jenkins
–  Timeout, fork, join, …
•  Workflow is version
controlled in Git
–  Push to Jenkins to load them up
Jenkow Plugin
©2010 CloudBees, Inc. All Rights Reserved 39©2010 CloudBees, Inc. All Rights Reserved
Lease and SSH access
•  Lease Jenkins executors for interactive
SSH access
Remote	
  terminal	
  access	
  plugin	
  
©2010 CloudBees, Inc. All Rights Reserved
Demo
©2010 CloudBees, Inc. All Rights Reserved 41©2010 CloudBees, Inc. All Rights Reserved
Lease and SSH access: characteristics
•  Easy coordination between nodes
•  Jenkins scheduling aware
•  No dependency to individual slaves
©2010 CloudBees, Inc. All Rights Reserved
Now that we have more slaves…
#3: validated merge
©2010 CloudBees, Inc. All Rights Reserved 43©2010 CloudBees, Inc. All Rights Reserved
Did this ever happen to you?
©2010 CloudBees, Inc. All Rights Reserved 44©2010 CloudBees, Inc. All Rights Reserved
Commit	
  
↓	
  
Push	
  
↓	
  
Test	
  
©2010 CloudBees, Inc. All Rights Reserved 45©2010 CloudBees, Inc. All Rights Reserved
Commit	
  
↓	
  
Test	
  
↓	
  
Push	
  
©2010 CloudBees, Inc. All Rights Reserved 46©2010 CloudBees, Inc. All Rights Reserved
More concretely
•  You push to Jenkins
•  Jenkins merges it with upstream
•  Jenkins tests it
•  If good, Jenkins pushes it upstream
upstream	
  
repo	
  
gate	
  	
  
repo	
  
©2010 CloudBees, Inc. All Rights Reserved
Demo
©2010 CloudBees, Inc. All Rights Reserved 48©2010 CloudBees, Inc. All Rights Reserved
Conclusions
•  Tame more slaves
•  Lots of interesting things you can do
©2010 CloudBees, Inc. All Rights Reserved
Now that we have more slaves…
#4: matrix projects
©2010 CloudBees, Inc. All Rights Reserved 50©2010 CloudBees, Inc. All Rights Reserved
Motivation
•  You often do the same thing with slight
variations
– Compile C++ code for different platforms
– Test with different browsers
– Or more generally, think of it as
for (x in [a,b,c]) {
for (y in [d,e,f]) {
doSomethingWith(x,y,z,..);
}
}
©2010 CloudBees, Inc. All Rights Reserved 51©2010 CloudBees, Inc. All Rights Reserved
Model
•  Define axes
– One axis ≈ one for loop
•  Choose from pre-defined types of Axis
– Slave axis: pick slaves by their names or their
labels
•  e.g., linux, solaris, and windows
– Generic axis: arbitrary values exposed as
environment variables
©2010 CloudBees, Inc. All Rights Reserved 52©2010 CloudBees, Inc. All Rights Reserved
Matrix Project Gimmicks
•  Filtering
–  Otherwise combinations increase exponentially
–  Not all combinations make sense
–  Use boolean expression to trim down the size
–  Or tell Jenkins to cut the workload to N%
•  Jenkins will thin out the combinations by itself
(label==“windows”).implies(browser==“iexplore”) &&
(label==“mac”).implies(browser==“safari”)
©2010 CloudBees, Inc. All Rights Reserved
Demo

More Related Content

What's hot

Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for TestingCarlos Sanchez
 
Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010Arun Gupta
 
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
 
JavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build EnvironmentJavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build EnvironmentKohsuke Kawaguchi
 
Hudson at FISL 2009
Hudson at FISL 2009Hudson at FISL 2009
Hudson at FISL 2009Arun Gupta
 
How Jenkins Builds the Netflix Global Streaming Service
How Jenkins Builds the Netflix Global Streaming ServiceHow Jenkins Builds the Netflix Global Streaming Service
How Jenkins Builds the Netflix Global Streaming ServiceGareth Bowles
 
DCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best PracticesDCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best PracticesDocker, Inc.
 
Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Continuous Delivery in Enterprise Environments using Docker, Ansible and JenkinsContinuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Continuous Delivery in Enterprise Environments using Docker, Ansible and JenkinsMarcel Birkner
 
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.
 
Javaone 2014 - Git & Docker with Jenkins
Javaone 2014 - Git & Docker with JenkinsJavaone 2014 - Git & Docker with Jenkins
Javaone 2014 - Git & Docker with JenkinsAndy Pemberton
 
OSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating JenkinsOSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating JenkinsNETWAYS
 
Building Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleBuilding Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleJulien Pivotto
 
Lessons Learned: Using Concourse In Production
Lessons Learned: Using Concourse In ProductionLessons Learned: Using Concourse In Production
Lessons Learned: Using Concourse In ProductionShingo Omura
 
Rise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentRise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentSven Peters
 
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying ConfigurationIBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying ConfigurationDevelopment Seed
 
Docker Container As A Service - JAX 2016
Docker Container As A Service - JAX 2016Docker Container As A Service - JAX 2016
Docker Container As A Service - JAX 2016Patrick Chanezon
 
Continuous Integration using Docker & Jenkins
Continuous Integration using Docker & JenkinsContinuous Integration using Docker & Jenkins
Continuous Integration using Docker & JenkinsB1 Systems GmbH
 
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
 
State of the Jenkins Automation
State of the Jenkins AutomationState of the Jenkins Automation
State of the Jenkins AutomationJulien Pivotto
 

What's hot (20)

Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for Testing
 
Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010
 
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
 
JavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build EnvironmentJavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build Environment
 
Hudson at FISL 2009
Hudson at FISL 2009Hudson at FISL 2009
Hudson at FISL 2009
 
How Jenkins Builds the Netflix Global Streaming Service
How Jenkins Builds the Netflix Global Streaming ServiceHow Jenkins Builds the Netflix Global Streaming Service
How Jenkins Builds the Netflix Global Streaming Service
 
DCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best PracticesDCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best Practices
 
Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Continuous Delivery in Enterprise Environments using Docker, Ansible and JenkinsContinuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
 
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...
 
Javaone 2014 - Git & Docker with Jenkins
Javaone 2014 - Git & Docker with JenkinsJavaone 2014 - Git & Docker with Jenkins
Javaone 2014 - Git & Docker with Jenkins
 
OSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating JenkinsOSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating Jenkins
 
Building Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleBuilding Jenkins Pipelines at Scale
Building Jenkins Pipelines at Scale
 
Lessons Learned: Using Concourse In Production
Lessons Learned: Using Concourse In ProductionLessons Learned: Using Concourse In Production
Lessons Learned: Using Concourse In Production
 
Rise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentRise of the Machines - Automate your Development
Rise of the Machines - Automate your Development
 
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying ConfigurationIBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
 
Docker Container As A Service - JAX 2016
Docker Container As A Service - JAX 2016Docker Container As A Service - JAX 2016
Docker Container As A Service - JAX 2016
 
Continuous Integration using Docker & Jenkins
Continuous Integration using Docker & JenkinsContinuous Integration using Docker & Jenkins
Continuous Integration using Docker & Jenkins
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
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
 
State of the Jenkins Automation
State of the Jenkins AutomationState of the Jenkins Automation
State of the Jenkins Automation
 

Similar to Tap into the Power of Slaves with Jenkins

Creating a Developer Community
Creating a Developer CommunityCreating a Developer Community
Creating a Developer CommunityKohsuke Kawaguchi
 
How we made jenkins community
How we made jenkins communityHow we made jenkins community
How we made jenkins communityKohsuke Kawaguchi
 
Nebulaworks Docker Overview 09-22-2015
Nebulaworks Docker Overview 09-22-2015Nebulaworks Docker Overview 09-22-2015
Nebulaworks Docker Overview 09-22-2015Chris Ciborowski
 
The Butler is still young – applying modern Jenkins features to the Embedded ...
The Butler is still young – applying modern Jenkins features to the Embedded ...The Butler is still young – applying modern Jenkins features to the Embedded ...
The Butler is still young – applying modern Jenkins features to the Embedded ...Oleg Nenashev
 
Opening opensource : The Jenkins Way
Opening opensource : The Jenkins WayOpening opensource : The Jenkins Way
Opening opensource : The Jenkins WayNicolas De Loof
 
Introduction to Jenkins X - a beginner's guide
Introduction to Jenkins X - a beginner's guideIntroduction to Jenkins X - a beginner's guide
Introduction to Jenkins X - a beginner's guideAndrew Bayer
 
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
 
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allEclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allMarc Dutoo
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware
 
Custom Runtimes for the Cloud
Custom Runtimes for the CloudCustom Runtimes for the Cloud
Custom Runtimes for the CloudCloudBees
 
Dealing with kubesprawl tetris style !
Dealing with kubesprawl   tetris style !Dealing with kubesprawl   tetris style !
Dealing with kubesprawl tetris style !Taco Scargo
 
The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)Simon Haslam
 
Node.js Deeper Dive
Node.js Deeper DiveNode.js Deeper Dive
Node.js Deeper DiveJustin Reock
 
20191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 220191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 2makker_nl
 
Java / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBees
Java / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBeesJava / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBees
Java / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBeesParis Open Source Summit
 
20191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 120191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 1makker_nl
 

Similar to Tap into the Power of Slaves with Jenkins (20)

Elastic build environment
Elastic build environmentElastic build environment
Elastic build environment
 
Sjug aug 2010_cloud
Sjug aug 2010_cloudSjug aug 2010_cloud
Sjug aug 2010_cloud
 
Creating a Developer Community
Creating a Developer CommunityCreating a Developer Community
Creating a Developer Community
 
How we made jenkins community
How we made jenkins communityHow we made jenkins community
How we made jenkins community
 
Nebulaworks Docker Overview 09-22-2015
Nebulaworks Docker Overview 09-22-2015Nebulaworks Docker Overview 09-22-2015
Nebulaworks Docker Overview 09-22-2015
 
The Butler is still young – applying modern Jenkins features to the Embedded ...
The Butler is still young – applying modern Jenkins features to the Embedded ...The Butler is still young – applying modern Jenkins features to the Embedded ...
The Butler is still young – applying modern Jenkins features to the Embedded ...
 
Opening opensource : The Jenkins Way
Opening opensource : The Jenkins WayOpening opensource : The Jenkins Way
Opening opensource : The Jenkins Way
 
Introduction to Jenkins X - a beginner's guide
Introduction to Jenkins X - a beginner's guideIntroduction to Jenkins X - a beginner's guide
Introduction to Jenkins X - a beginner's guide
 
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)
 
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allEclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
 
Custom Runtimes for the Cloud
Custom Runtimes for the CloudCustom Runtimes for the Cloud
Custom Runtimes for the Cloud
 
Cicd.pdf
Cicd.pdfCicd.pdf
Cicd.pdf
 
Ma forge++ : @Cloud
Ma forge++ : @CloudMa forge++ : @Cloud
Ma forge++ : @Cloud
 
Dealing with kubesprawl tetris style !
Dealing with kubesprawl   tetris style !Dealing with kubesprawl   tetris style !
Dealing with kubesprawl tetris style !
 
The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)
 
Node.js Deeper Dive
Node.js Deeper DiveNode.js Deeper Dive
Node.js Deeper Dive
 
20191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 220191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 2
 
Java / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBees
Java / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBeesJava / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBees
Java / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBees
 
20191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 120191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 1
 

More from ZeroTurnaround

XRebel - Real Time Insight, Faster Apps
XRebel - Real Time Insight, Faster AppsXRebel - Real Time Insight, Faster Apps
XRebel - Real Time Insight, Faster AppsZeroTurnaround
 
Top Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocks
Top Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocksTop Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocks
Top Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocksZeroTurnaround
 
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...ZeroTurnaround
 
Java Tools and Technologies Landscape for 2014 (image gallery)
Java Tools and Technologies Landscape for 2014 (image gallery)Java Tools and Technologies Landscape for 2014 (image gallery)
Java Tools and Technologies Landscape for 2014 (image gallery)ZeroTurnaround
 
Getting Started with IntelliJ IDEA as an Eclipse User
Getting Started with IntelliJ IDEA as an Eclipse UserGetting Started with IntelliJ IDEA as an Eclipse User
Getting Started with IntelliJ IDEA as an Eclipse UserZeroTurnaround
 
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...ZeroTurnaround
 
DevOps vs Traditional IT Ops (DevOps Days ignite talk by Oliver White)
DevOps vs Traditional IT Ops (DevOps Days ignite talk by Oliver White)DevOps vs Traditional IT Ops (DevOps Days ignite talk by Oliver White)
DevOps vs Traditional IT Ops (DevOps Days ignite talk by Oliver White)ZeroTurnaround
 
Lazy Coder's Visual Guide to RebelLabs' Developer Productivity Report 2013
Lazy Coder's Visual Guide to RebelLabs' Developer Productivity Report 2013Lazy Coder's Visual Guide to RebelLabs' Developer Productivity Report 2013
Lazy Coder's Visual Guide to RebelLabs' Developer Productivity Report 2013ZeroTurnaround
 
The State of Managed Runtimes 2013, by Attila Szegedi
The State of Managed Runtimes 2013, by Attila SzegediThe State of Managed Runtimes 2013, by Attila Szegedi
The State of Managed Runtimes 2013, by Attila SzegediZeroTurnaround
 
Language Design Tradeoffs - Kotlin and Beyond, by Andrey Breslav
Language Design Tradeoffs - Kotlin and Beyond, by Andrey BreslavLanguage Design Tradeoffs - Kotlin and Beyond, by Andrey Breslav
Language Design Tradeoffs - Kotlin and Beyond, by Andrey BreslavZeroTurnaround
 
Runtime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan Sciampacone
Runtime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan SciampaconeRuntime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan Sciampacone
Runtime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan SciampaconeZeroTurnaround
 
Easy Scaling with Open Source Data Structures, by Talip Ozturk
Easy Scaling with Open Source Data Structures, by Talip OzturkEasy Scaling with Open Source Data Structures, by Talip Ozturk
Easy Scaling with Open Source Data Structures, by Talip OzturkZeroTurnaround
 
Blast your app with Gatling! by Stephane Landelle
Blast your app with Gatling! by Stephane LandelleBlast your app with Gatling! by Stephane Landelle
Blast your app with Gatling! by Stephane LandelleZeroTurnaround
 
JVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovJVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovZeroTurnaround
 
How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersZeroTurnaround
 
Level Up Your Git and GitHub Experience by Jordan McCullough and Brent Beer
Level Up Your Git and GitHub Experience by Jordan McCullough and Brent BeerLevel Up Your Git and GitHub Experience by Jordan McCullough and Brent Beer
Level Up Your Git and GitHub Experience by Jordan McCullough and Brent BeerZeroTurnaround
 
AST Transformations: Groovy’s best kept secret by Andres Almiray
AST Transformations: Groovy’s best kept secret by Andres AlmirayAST Transformations: Groovy’s best kept secret by Andres Almiray
AST Transformations: Groovy’s best kept secret by Andres AlmirayZeroTurnaround
 
Language Design Tradeoffs (Kotlin and Beyond) by Andrey Breslav
Language Design Tradeoffs (Kotlin and Beyond) by Andrey BreslavLanguage Design Tradeoffs (Kotlin and Beyond) by Andrey Breslav
Language Design Tradeoffs (Kotlin and Beyond) by Andrey BreslavZeroTurnaround
 
Spring 4 on Java 8 by Juergen Hoeller
Spring 4 on Java 8 by Juergen HoellerSpring 4 on Java 8 by Juergen Hoeller
Spring 4 on Java 8 by Juergen HoellerZeroTurnaround
 

More from ZeroTurnaround (20)

XRebel - Real Time Insight, Faster Apps
XRebel - Real Time Insight, Faster AppsXRebel - Real Time Insight, Faster Apps
XRebel - Real Time Insight, Faster Apps
 
Redeploy chart
Redeploy chartRedeploy chart
Redeploy chart
 
Top Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocks
Top Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocksTop Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocks
Top Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocks
 
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
 
Java Tools and Technologies Landscape for 2014 (image gallery)
Java Tools and Technologies Landscape for 2014 (image gallery)Java Tools and Technologies Landscape for 2014 (image gallery)
Java Tools and Technologies Landscape for 2014 (image gallery)
 
Getting Started with IntelliJ IDEA as an Eclipse User
Getting Started with IntelliJ IDEA as an Eclipse UserGetting Started with IntelliJ IDEA as an Eclipse User
Getting Started with IntelliJ IDEA as an Eclipse User
 
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
 
DevOps vs Traditional IT Ops (DevOps Days ignite talk by Oliver White)
DevOps vs Traditional IT Ops (DevOps Days ignite talk by Oliver White)DevOps vs Traditional IT Ops (DevOps Days ignite talk by Oliver White)
DevOps vs Traditional IT Ops (DevOps Days ignite talk by Oliver White)
 
Lazy Coder's Visual Guide to RebelLabs' Developer Productivity Report 2013
Lazy Coder's Visual Guide to RebelLabs' Developer Productivity Report 2013Lazy Coder's Visual Guide to RebelLabs' Developer Productivity Report 2013
Lazy Coder's Visual Guide to RebelLabs' Developer Productivity Report 2013
 
The State of Managed Runtimes 2013, by Attila Szegedi
The State of Managed Runtimes 2013, by Attila SzegediThe State of Managed Runtimes 2013, by Attila Szegedi
The State of Managed Runtimes 2013, by Attila Szegedi
 
Language Design Tradeoffs - Kotlin and Beyond, by Andrey Breslav
Language Design Tradeoffs - Kotlin and Beyond, by Andrey BreslavLanguage Design Tradeoffs - Kotlin and Beyond, by Andrey Breslav
Language Design Tradeoffs - Kotlin and Beyond, by Andrey Breslav
 
Runtime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan Sciampacone
Runtime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan SciampaconeRuntime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan Sciampacone
Runtime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan Sciampacone
 
Easy Scaling with Open Source Data Structures, by Talip Ozturk
Easy Scaling with Open Source Data Structures, by Talip OzturkEasy Scaling with Open Source Data Structures, by Talip Ozturk
Easy Scaling with Open Source Data Structures, by Talip Ozturk
 
Blast your app with Gatling! by Stephane Landelle
Blast your app with Gatling! by Stephane LandelleBlast your app with Gatling! by Stephane Landelle
Blast your app with Gatling! by Stephane Landelle
 
JVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovJVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir Ivanov
 
How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven Peters
 
Level Up Your Git and GitHub Experience by Jordan McCullough and Brent Beer
Level Up Your Git and GitHub Experience by Jordan McCullough and Brent BeerLevel Up Your Git and GitHub Experience by Jordan McCullough and Brent Beer
Level Up Your Git and GitHub Experience by Jordan McCullough and Brent Beer
 
AST Transformations: Groovy’s best kept secret by Andres Almiray
AST Transformations: Groovy’s best kept secret by Andres AlmirayAST Transformations: Groovy’s best kept secret by Andres Almiray
AST Transformations: Groovy’s best kept secret by Andres Almiray
 
Language Design Tradeoffs (Kotlin and Beyond) by Andrey Breslav
Language Design Tradeoffs (Kotlin and Beyond) by Andrey BreslavLanguage Design Tradeoffs (Kotlin and Beyond) by Andrey Breslav
Language Design Tradeoffs (Kotlin and Beyond) by Andrey Breslav
 
Spring 4 on Java 8 by Juergen Hoeller
Spring 4 on Java 8 by Juergen HoellerSpring 4 on Java 8 by Juergen Hoeller
Spring 4 on Java 8 by Juergen Hoeller
 

Recently uploaded

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 

Recently uploaded (20)

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 

Tap into the Power of Slaves with Jenkins

  • 1. ©2010 CloudBees, Inc. All Rights Reserved©2010 CloudBees, Inc. All Rights Reserved Tap into the Power of Slaves with Jenkins Kohsuke Kawaguchi
  • 2. ©2010 CloudBees, Inc. All Rights Reserved 2©2010 CloudBees, Inc. All Rights Reserved Have You Met Jenkins?h"p://jenkins-­‐ci.org/    
  • 3. ©2010 CloudBees, Inc. All Rights Reserved 3©2010 CloudBees, Inc. All Rights Reserved x  64,000  
  • 4. ©2010 CloudBees, Inc. All Rights Reserved 4©2010 CloudBees, Inc. All Rights Reserved
  • 5. ©2010 CloudBees, Inc. All Rights Reserved 5©2010 CloudBees, Inc. All Rights Reserved x  700  
  • 6. ©2010 CloudBees, Inc. All Rights Reserved 6©2010 CloudBees, Inc. All Rights Reserved
  • 7. ©2010 CloudBees, Inc. All Rights Reserved 7©2010 CloudBees, Inc. All Rights Reserved
  • 8. ©2010 CloudBees, Inc. All Rights Reserved 8©2010 CloudBees, Inc. All Rights Reserved
  • 9. ©2010 CloudBees, Inc. All Rights Reserved 9©2010 CloudBees, Inc. All Rights Reserved
  • 10. ©2010 CloudBees, Inc. All Rights Reserved 10©2010 CloudBees, Inc. All Rights Reserved
  • 11. ©2010 CloudBees, Inc. All Rights Reserved 11©2010 CloudBees, Inc. All Rights Reserved ©  Kurt  Löwenstein  EducaConal  Center  InternaConal  Team   h"p://commons.wikimedia.org/wiki/File:DiscriminaCon-­‐Diversity-­‐03.jpg   CreaCve  Commons  A"ribuCon  2.0  Generic  
  • 12. ©2010 CloudBees, Inc. All Rights Reserved Demo Really, We Made It Easy!
  • 13. ©2010 CloudBees, Inc. All Rights Reserved 13©2010 CloudBees, Inc. All Rights Reserved •  Master –  Serves HTTP requests –  Stores all important info •  Slaves –  280KB single jar –  Assumed to be unreliable –  Scale to at least 100 Distributed builds with Jenkins Master   slave1   slave2   slave3   slave4   slave5   slave6   slave7   slave8  
  • 14. ©2010 CloudBees, Inc. All Rights Reserved 14©2010 CloudBees, Inc. All Rights Reserved Lots More Ways to Deploy Slaves •  Via DCOM
  • 15. ©2010 CloudBees, Inc. All Rights Reserved 15©2010 CloudBees, Inc. All Rights Reserved Lots More Way To Deploy Slaves •  Good old shell scripting $ java -jar slave.jar -jnlpUrl URL
  • 16. ©2010 CloudBees, Inc. All Rights Reserved 16©2010 CloudBees, Inc. All Rights Reserved How Flexible Does It Get? •  Slave agent is a little Java program – Runs locally on the machine that it controls – Access files, fork processes, etc., on behalf of master •  Communication with master – Just needs a bi-di byte stream •  No shared file system, no network topology constraints, etc
  • 17. ©2010 CloudBees, Inc. All Rights Reserved 17©2010 CloudBees, Inc. All Rights Reserved Static Virtual Machines As Build Slaves •  Allocate lots of identical VMs – Better consistency, lower overhead •  Curve up 1 big machine to small VMs •  Throw away > maintain
  • 18. ©2010 CloudBees, Inc. All Rights Reserved 18©2010 CloudBees, Inc. All Rights Reserved Labels •  Refer to slaves but not by name Name:  alpha   Label:  windows  32bit   Name:  bravo   Label:  linux  32bit   Name:  charlie   Label:  linux  64bit  
  • 19. ©2010 CloudBees, Inc. All Rights Reserved 19©2010 CloudBees, Inc. All Rights Reserved Labels Name:  alpha   Label:  windows  32bit   Name:  bravo   Label:  linux  32bit   Name:  charlie   Label:  linux  64bit   This  job  needs  to  run   on  “linux”  
  • 20. ©2010 CloudBees, Inc. All Rights Reserved 20©2010 CloudBees, Inc. All Rights Reserved Labels Name:  alpha   Label:  windows  32bit   Name:  bravo   Label:  linux  32bit   Name:  charlie   Label:  linux  64bit   This  job  needs  to  run   on  “linux  &&  32bit”  
  • 21. ©2010 CloudBees, Inc. All Rights Reserved 21©2010 CloudBees, Inc. All Rights Reserved More Label Benefits •  Labels can be anything – Geographic locations – Availability of proprietary software installed •  Better resource utilization – Jenkins have maximum freedom •  Resilient to node addition/removal – Treat servers like livestocks, not like pets
  • 22. ©2010 CloudBees, Inc. All Rights Reserved 22©2010 CloudBees, Inc. All Rights Reserved Labels   ↓   ElasCc  Slaves  
  • 23. ©2010 CloudBees, Inc. All Rights Reserved 23©2010 CloudBees, Inc. All Rights Reserved Tracking demand for specific label
  • 24. ©2010 CloudBees, Inc. All Rights Reserved 24©2010 CloudBees, Inc. All Rights Reserved Then Adjust Capacity based on it
  • 25. ©2010 CloudBees, Inc. All Rights Reserved 25©2010 CloudBees, Inc. All Rights Reserved How? •  EC2 Plugin – Longest history, most popular •  JClouds plugin – For OpenStack & CloudStack users, mainly – Unfortunate name, if you ask me •  Common to both – Multiple image types
  • 26. ©2010 CloudBees, Inc. All Rights Reserved 26©2010 CloudBees, Inc. All Rights Reserved Interesting Use Cases Worth Noting •  Single-use slaves (JClouds) – Used once & destroyed •  Static but utility-priced slaves (EC2) – Jenkins stops idle slaves to reduce $$$ – Great for infrequent use •  Coming soon: spot instances (EC2)
  • 27. ©2010 CloudBees, Inc. All Rights Reserved 27©2010 CloudBees, Inc. All Rights Reserved CloudBees DEV@cloud •  Completely elastic slaves •  Keeps your warm workspace •  Per-minute pricing, not per-hour
  • 28. ©2010 CloudBees, Inc. All Rights Reserved Now that we have more slaves… #1: parallel test execution
  • 29. ©2010 CloudBees, Inc. All Rights Reserved 29©2010 CloudBees, Inc. All Rights Reserved Running Tests in Parallel Why?
  • 30. ©2010 CloudBees, Inc. All Rights Reserved 30©2010 CloudBees, Inc. All Rights Reserved Pre-requisites Build script that supports test exclusion file
  • 31. ©2010 CloudBees, Inc. All Rights Reserved 31©2010 CloudBees, Inc. All Rights Reserved How It Works Test  Group  #1   Test  Group  #2   Test  Group  #3  
  • 32. ©2010 CloudBees, Inc. All Rights Reserved 32©2010 CloudBees, Inc. All Rights Reserved How It Works foo  #10   Test  Group  #1   foo  #11   Test  Group  #2   foo  #12   Test  Goup  #3  
  • 33. ©2010 CloudBees, Inc. All Rights Reserved Demo
  • 34. ©2010 CloudBees, Inc. All Rights Reserved 34©2010 CloudBees, Inc. All Rights Reserved For Maven •  Trick – Turn a build into a Maven repository – Maven profiles for controlling what to run when Build   Parallel   Test   Test  Group  #1   Test  Group  #2   Test  Group  #3  
  • 35. ©2010 CloudBees, Inc. All Rights Reserved Demo
  • 36. ©2010 CloudBees, Inc. All Rights Reserved Now that we have more slaves… #2: activities than span multiple computers
  • 37. ©2010 CloudBees, Inc. All Rights Reserved 37©2010 CloudBees, Inc. All Rights Reserved Build Flow Plugin •  Groovy DSL for coordinating job executions – High-level primitives – Ability to define abstractions b  =  build(“acme-­‐build”)   guard  {    parallel  (      {  build(“acme-­‐test1”,  param1:b.number)  },      {  build(“acme-­‐test2”,  param1:b.number)  }    )   }  rescue  {    build(“acme-­‐teardown”)   }  
  • 38. ©2010 CloudBees, Inc. All Rights Reserved 38©2010 CloudBees, Inc. All Rights Reserved •  Embed BPMN workflow engine in Jenkins –  Timeout, fork, join, … •  Workflow is version controlled in Git –  Push to Jenkins to load them up Jenkow Plugin
  • 39. ©2010 CloudBees, Inc. All Rights Reserved 39©2010 CloudBees, Inc. All Rights Reserved Lease and SSH access •  Lease Jenkins executors for interactive SSH access Remote  terminal  access  plugin  
  • 40. ©2010 CloudBees, Inc. All Rights Reserved Demo
  • 41. ©2010 CloudBees, Inc. All Rights Reserved 41©2010 CloudBees, Inc. All Rights Reserved Lease and SSH access: characteristics •  Easy coordination between nodes •  Jenkins scheduling aware •  No dependency to individual slaves
  • 42. ©2010 CloudBees, Inc. All Rights Reserved Now that we have more slaves… #3: validated merge
  • 43. ©2010 CloudBees, Inc. All Rights Reserved 43©2010 CloudBees, Inc. All Rights Reserved Did this ever happen to you?
  • 44. ©2010 CloudBees, Inc. All Rights Reserved 44©2010 CloudBees, Inc. All Rights Reserved Commit   ↓   Push   ↓   Test  
  • 45. ©2010 CloudBees, Inc. All Rights Reserved 45©2010 CloudBees, Inc. All Rights Reserved Commit   ↓   Test   ↓   Push  
  • 46. ©2010 CloudBees, Inc. All Rights Reserved 46©2010 CloudBees, Inc. All Rights Reserved More concretely •  You push to Jenkins •  Jenkins merges it with upstream •  Jenkins tests it •  If good, Jenkins pushes it upstream upstream   repo   gate     repo  
  • 47. ©2010 CloudBees, Inc. All Rights Reserved Demo
  • 48. ©2010 CloudBees, Inc. All Rights Reserved 48©2010 CloudBees, Inc. All Rights Reserved Conclusions •  Tame more slaves •  Lots of interesting things you can do
  • 49. ©2010 CloudBees, Inc. All Rights Reserved Now that we have more slaves… #4: matrix projects
  • 50. ©2010 CloudBees, Inc. All Rights Reserved 50©2010 CloudBees, Inc. All Rights Reserved Motivation •  You often do the same thing with slight variations – Compile C++ code for different platforms – Test with different browsers – Or more generally, think of it as for (x in [a,b,c]) { for (y in [d,e,f]) { doSomethingWith(x,y,z,..); } }
  • 51. ©2010 CloudBees, Inc. All Rights Reserved 51©2010 CloudBees, Inc. All Rights Reserved Model •  Define axes – One axis ≈ one for loop •  Choose from pre-defined types of Axis – Slave axis: pick slaves by their names or their labels •  e.g., linux, solaris, and windows – Generic axis: arbitrary values exposed as environment variables
  • 52. ©2010 CloudBees, Inc. All Rights Reserved 52©2010 CloudBees, Inc. All Rights Reserved Matrix Project Gimmicks •  Filtering –  Otherwise combinations increase exponentially –  Not all combinations make sense –  Use boolean expression to trim down the size –  Or tell Jenkins to cut the workload to N% •  Jenkins will thin out the combinations by itself (label==“windows”).implies(browser==“iexplore”) && (label==“mac”).implies(browser==“safari”)
  • 53. ©2010 CloudBees, Inc. All Rights Reserved Demo