SlideShare a Scribd company logo
1 of 37
Download to read offline
Managing Jenkins with Jenkins

Tweet @garethbowles with feedback!
Monday, October 28, 13

Hi, I’m Gareth from Netflix. It’s great to be back for my third JUC !
I’m going to talk about how we use Jenkins’ System Groovy Scripts feature to automate the management of our Jenkins infrastructure.
I hope you’ll get inspired by some of these ideas to try them out yourselves. As this is a short talk there may not be much time for
questions, but find me afterwards or tweet me if you want to follow up.
@
•
•
•
•
•
•

3200 jobs
3TB build data
6 masters
~100 slaves / ~250 executors
15% build failure rate
All 700 engineers can set up / run jobs

Tweet @garethbowles with feedback!
Monday, October 28, 13

We have a pretty big Jenkins setup, it’s the centrepiece of the pipeline that builds our streaming service.
Our main master has 3200 builds, 3TB of build data data
We have a growing number of masters as we split jobs between different masters for speed and reliability
Housekeeping and monitoring has to be automated due to this scale. We need to make sure our slaves are online, disk space for builds is
kept under control, builds run on the right slaves, and be able to update the configuration of many jobs or slaves at a time.
And because all our engineers have job configuration access, we need to make sure that some basic conventions are followed and nothing
gets too out of control.
How can we automate all the Jenkins things ?

Tweet @garethbowles with feedback!
Monday, October 28, 13

Jenkins has quite a few options for automation.
How can we automate all the Jenkins things ?

•

Remote API - nice, but limited update functions

Tweet @garethbowles with feedback!
Monday, October 28, 13

Jenkins has quite a few options for automation.
How can we automate all the Jenkins things ?

•
•

Remote API - nice, but limited update functions
Jenkins CLI - ditto

Tweet @garethbowles with feedback!
Monday, October 28, 13

Jenkins has quite a few options for automation.
How can we automate all the Jenkins things ?

•
•
•

Remote API - nice, but limited update functions
Jenkins CLI - ditto
Custom plugins - powerful but heavyweight

Tweet @garethbowles with feedback!
Monday, October 28, 13

Jenkins has quite a few options for automation.
A Better Option

Tweet @garethbowles with feedback!
Monday, October 28, 13

Here’s a more lightweight but still very powerful way to automate Jenkins tasks.
System Groovy Scripts

Tweet @garethbowles with feedback!
Monday, October 28, 13

Using system Groovy scripts gives you full access to Jenkins’ JVM and object model just like a plugin, but the scripts are much easier to
write and maintain.
You get the benefit of Jenkins’ built in features for tracking script results, scheduling runs, notifying users of the results and visualizing
data (with the plot plugin for example).
Many of our needs aren’t generic enough to make it worth writing a plugin, anyway.
But it’s always good to script a task, even if you think it’s a one-off - that way if you’re wrong you get to re-run it, and you can track it
back easily if something goes wrong.
System Groovy Scripts

•

Full access to the Jenkins master’s JVM

Tweet @garethbowles with feedback!
Monday, October 28, 13

Using system Groovy scripts gives you full access to Jenkins’ JVM and object model just like a plugin, but the scripts are much easier to
write and maintain.
You get the benefit of Jenkins’ built in features for tracking script results, scheduling runs, notifying users of the results and visualizing
data (with the plot plugin for example).
Many of our needs aren’t generic enough to make it worth writing a plugin, anyway.
But it’s always good to script a task, even if you think it’s a one-off - that way if you’re wrong you get to re-run it, and you can track it
back easily if something goes wrong.
System Groovy Scripts

•
•

Full access to the Jenkins master’s JVM
Much quicker than writing a plugin

Tweet @garethbowles with feedback!
Monday, October 28, 13

Using system Groovy scripts gives you full access to Jenkins’ JVM and object model just like a plugin, but the scripts are much easier to
write and maintain.
You get the benefit of Jenkins’ built in features for tracking script results, scheduling runs, notifying users of the results and visualizing
data (with the plot plugin for example).
Many of our needs aren’t generic enough to make it worth writing a plugin, anyway.
But it’s always good to script a task, even if you think it’s a one-off - that way if you’re wrong you get to re-run it, and you can track it
back easily if something goes wrong.
System Groovy Scripts

•
•
•

Full access to the Jenkins master’s JVM
Much quicker than writing a plugin
Make use of Jenkins' job scheduling, logging,
notification and data visualization  

Tweet @garethbowles with feedback!
Monday, October 28, 13

Using system Groovy scripts gives you full access to Jenkins’ JVM and object model just like a plugin, but the scripts are much easier to
write and maintain.
You get the benefit of Jenkins’ built in features for tracking script results, scheduling runs, notifying users of the results and visualizing
data (with the plot plugin for example).
Many of our needs aren’t generic enough to make it worth writing a plugin, anyway.
But it’s always good to script a task, even if you think it’s a one-off - that way if you’re wrong you get to re-run it, and you can track it
back easily if something goes wrong.
System Groovy Scripts

•
•
•

Full access to the Jenkins master’s JVM

•

Needs the Groovy plugin: https://wiki.jenkinsci.org/display/JENKINS/Groovy+plugin

Much quicker than writing a plugin
Make use of Jenkins' job scheduling, logging,
notification and data visualization  

Tweet @garethbowles with feedback!
Monday, October 28, 13

Using system Groovy scripts gives you full access to Jenkins’ JVM and object model just like a plugin, but the scripts are much easier to
write and maintain.
You get the benefit of Jenkins’ built in features for tracking script results, scheduling runs, notifying users of the results and visualizing
data (with the plot plugin for example).
Many of our needs aren’t generic enough to make it worth writing a plugin, anyway.
But it’s always good to script a task, even if you think it’s a one-off - that way if you’re wrong you get to re-run it, and you can track it
back easily if something goes wrong.
Examples

Tweet @garethbowles with feedback!
Monday, October 28, 13

Here are a few examples of the work we do with system Groovy scripts.
If a job hasn’t built successfully in 90 days or more, we disable it to reduce the number of wasted executions of broken jobs.
We can relabel a set of slaves with a given group of labels - useful if we want to update the configuration of our EC2 slaves, we can
remove labels from the old slaves so that no more builds are sent to them, then wait for builds to finish before terminating them.
We monitor our standard slave pool for builds that failed with remoting errors that can affect other builds, and disconnect / reconnect the
slaves (a reconnect usually works, otherwise we leave the slave offline for analysis).
We monitor custom build slaves and send notifications to the owners if they get disconnected.
We scan all enabled jobs to make sure that the number of builds to keep is set (the default is to keep all builds, which can chew up disk
space fast).
We make sure that all jobs have the “restrict where this build can be run” field set, so that Linux builds don’t end up on a Windows slave
for example.
•

Examples
Disable old or broken jobs

Tweet @garethbowles with feedback!
Monday, October 28, 13

Here are a few examples of the work we do with system Groovy scripts.
If a job hasn’t built successfully in 90 days or more, we disable it to reduce the number of wasted executions of broken jobs.
We can relabel a set of slaves with a given group of labels - useful if we want to update the configuration of our EC2 slaves, we can
remove labels from the old slaves so that no more builds are sent to them, then wait for builds to finish before terminating them.
We monitor our standard slave pool for builds that failed with remoting errors that can affect other builds, and disconnect / reconnect the
slaves (a reconnect usually works, otherwise we leave the slave offline for analysis).
We monitor custom build slaves and send notifications to the owners if they get disconnected.
We scan all enabled jobs to make sure that the number of builds to keep is set (the default is to keep all builds, which can chew up disk
space fast).
We make sure that all jobs have the “restrict where this build can be run” field set, so that Linux builds don’t end up on a Windows slave
for example.
•
•

Examples
Disable old or broken jobs
Relabel a set of slaves

Tweet @garethbowles with feedback!
Monday, October 28, 13

Here are a few examples of the work we do with system Groovy scripts.
If a job hasn’t built successfully in 90 days or more, we disable it to reduce the number of wasted executions of broken jobs.
We can relabel a set of slaves with a given group of labels - useful if we want to update the configuration of our EC2 slaves, we can
remove labels from the old slaves so that no more builds are sent to them, then wait for builds to finish before terminating them.
We monitor our standard slave pool for builds that failed with remoting errors that can affect other builds, and disconnect / reconnect the
slaves (a reconnect usually works, otherwise we leave the slave offline for analysis).
We monitor custom build slaves and send notifications to the owners if they get disconnected.
We scan all enabled jobs to make sure that the number of builds to keep is set (the default is to keep all builds, which can chew up disk
space fast).
We make sure that all jobs have the “restrict where this build can be run” field set, so that Linux builds don’t end up on a Windows slave
for example.
•
•
•

Examples
Disable old or broken jobs
Relabel a set of slaves
Monitor slave uptime

Tweet @garethbowles with feedback!
Monday, October 28, 13

Here are a few examples of the work we do with system Groovy scripts.
If a job hasn’t built successfully in 90 days or more, we disable it to reduce the number of wasted executions of broken jobs.
We can relabel a set of slaves with a given group of labels - useful if we want to update the configuration of our EC2 slaves, we can
remove labels from the old slaves so that no more builds are sent to them, then wait for builds to finish before terminating them.
We monitor our standard slave pool for builds that failed with remoting errors that can affect other builds, and disconnect / reconnect the
slaves (a reconnect usually works, otherwise we leave the slave offline for analysis).
We monitor custom build slaves and send notifications to the owners if they get disconnected.
We scan all enabled jobs to make sure that the number of builds to keep is set (the default is to keep all builds, which can chew up disk
space fast).
We make sure that all jobs have the “restrict where this build can be run” field set, so that Linux builds don’t end up on a Windows slave
for example.
•
•
•
•

Examples
Disable old or broken jobs
Relabel a set of slaves
Monitor slave uptime
Disconnect bad slaves

Tweet @garethbowles with feedback!
Monday, October 28, 13

Here are a few examples of the work we do with system Groovy scripts.
If a job hasn’t built successfully in 90 days or more, we disable it to reduce the number of wasted executions of broken jobs.
We can relabel a set of slaves with a given group of labels - useful if we want to update the configuration of our EC2 slaves, we can
remove labels from the old slaves so that no more builds are sent to them, then wait for builds to finish before terminating them.
We monitor our standard slave pool for builds that failed with remoting errors that can affect other builds, and disconnect / reconnect the
slaves (a reconnect usually works, otherwise we leave the slave offline for analysis).
We monitor custom build slaves and send notifications to the owners if they get disconnected.
We scan all enabled jobs to make sure that the number of builds to keep is set (the default is to keep all builds, which can chew up disk
space fast).
We make sure that all jobs have the “restrict where this build can be run” field set, so that Linux builds don’t end up on a Windows slave
for example.
•
•
•
•
•

Examples
Disable old or broken jobs
Relabel a set of slaves
Monitor slave uptime
Disconnect bad slaves
Set number of builds to keep

Tweet @garethbowles with feedback!
Monday, October 28, 13

Here are a few examples of the work we do with system Groovy scripts.
If a job hasn’t built successfully in 90 days or more, we disable it to reduce the number of wasted executions of broken jobs.
We can relabel a set of slaves with a given group of labels - useful if we want to update the configuration of our EC2 slaves, we can
remove labels from the old slaves so that no more builds are sent to them, then wait for builds to finish before terminating them.
We monitor our standard slave pool for builds that failed with remoting errors that can affect other builds, and disconnect / reconnect the
slaves (a reconnect usually works, otherwise we leave the slave offline for analysis).
We monitor custom build slaves and send notifications to the owners if they get disconnected.
We scan all enabled jobs to make sure that the number of builds to keep is set (the default is to keep all builds, which can chew up disk
space fast).
We make sure that all jobs have the “restrict where this build can be run” field set, so that Linux builds don’t end up on a Windows slave
for example.
•
•
•
•
•
•

Examples
Disable old or broken jobs
Relabel a set of slaves
Monitor slave uptime
Disconnect bad slaves
Set number of builds to keep
Check build labels

Tweet @garethbowles with feedback!
Monday, October 28, 13

Here are a few examples of the work we do with system Groovy scripts.
If a job hasn’t built successfully in 90 days or more, we disable it to reduce the number of wasted executions of broken jobs.
We can relabel a set of slaves with a given group of labels - useful if we want to update the configuration of our EC2 slaves, we can
remove labels from the old slaves so that no more builds are sent to them, then wait for builds to finish before terminating them.
We monitor our standard slave pool for builds that failed with remoting errors that can affect other builds, and disconnect / reconnect the
slaves (a reconnect usually works, otherwise we leave the slave offline for analysis).
We monitor custom build slaves and send notifications to the owners if they get disconnected.
We scan all enabled jobs to make sure that the number of builds to keep is set (the default is to keep all builds, which can chew up disk
space fast).
We make sure that all jobs have the “restrict where this build can be run” field set, so that Linux builds don’t end up on a Windows slave
for example.
How do I figure out what to write ?

Tweet @garethbowles with feedback!
Monday, October 28, 13

Figuring out where to start writing a script can be tricky, but there are lots of resources available.
Resources

Tweet @garethbowles with feedback!
Monday, October 28, 13

There are a lot of sample scripts out there that may well do what you want. The Scriptler plugin gives you access to a hosted script
catalog. There’s also a GitHub repo with many examples - I find this easier to update so that’s where I’ve put our examples.
You can try out your code using the Groovy script console provided by the Groovy plugin. Make sure you know what you’re doing !
The online JavaDoc for the Jenkins Java API is the source of truth, but can be tricky to navigate.
We wrote a simple object inspector method that shows you what type of object you’re working with.
•

Resources
Sample scripts - Scriptler plugin (https://
wiki.jenkins-ci.org/display/JENKINS/Scriptler
+Plugin) or GitHub repo (https://github.com/
jenkinsci/jenkins-scripts)

Tweet @garethbowles with feedback!
Monday, October 28, 13

There are a lot of sample scripts out there that may well do what you want. The Scriptler plugin gives you access to a hosted script
catalog. There’s also a GitHub repo with many examples - I find this easier to update so that’s where I’ve put our examples.
You can try out your code using the Groovy script console provided by the Groovy plugin. Make sure you know what you’re doing !
The online JavaDoc for the Jenkins Java API is the source of truth, but can be tricky to navigate.
We wrote a simple object inspector method that shows you what type of object you’re working with.
Resources

•

Sample scripts - Scriptler plugin (https://
wiki.jenkins-ci.org/display/JENKINS/Scriptler
+Plugin) or GitHub repo (https://github.com/
jenkinsci/jenkins-scripts)

•

Script console in Jenkins - be careful !

Tweet @garethbowles with feedback!
Monday, October 28, 13

There are a lot of sample scripts out there that may well do what you want. The Scriptler plugin gives you access to a hosted script
catalog. There’s also a GitHub repo with many examples - I find this easier to update so that’s where I’ve put our examples.
You can try out your code using the Groovy script console provided by the Groovy plugin. Make sure you know what you’re doing !
The online JavaDoc for the Jenkins Java API is the source of truth, but can be tricky to navigate.
We wrote a simple object inspector method that shows you what type of object you’re working with.
Resources

•

Sample scripts - Scriptler plugin (https://
wiki.jenkins-ci.org/display/JENKINS/Scriptler
+Plugin) or GitHub repo (https://github.com/
jenkinsci/jenkins-scripts)

•
•

Script console in Jenkins - be careful !
API JavaDoc: http://javadoc.jenkins-ci.org/
overview-summary.html

Tweet @garethbowles with feedback!
Monday, October 28, 13

There are a lot of sample scripts out there that may well do what you want. The Scriptler plugin gives you access to a hosted script
catalog. There’s also a GitHub repo with many examples - I find this easier to update so that’s where I’ve put our examples.
You can try out your code using the Groovy script console provided by the Groovy plugin. Make sure you know what you’re doing !
The online JavaDoc for the Jenkins Java API is the source of truth, but can be tricky to navigate.
We wrote a simple object inspector method that shows you what type of object you’re working with.
Resources

•

Sample scripts - Scriptler plugin (https://
wiki.jenkins-ci.org/display/JENKINS/Scriptler
+Plugin) or GitHub repo (https://github.com/
jenkinsci/jenkins-scripts)

•
•

Script console in Jenkins - be careful !

•

Object inspector method

API JavaDoc: http://javadoc.jenkins-ci.org/
overview-summary.html

Tweet @garethbowles with feedback!
Monday, October 28, 13

There are a lot of sample scripts out there that may well do what you want. The Scriptler plugin gives you access to a hosted script
catalog. There’s also a GitHub repo with many examples - I find this easier to update so that’s where I’ve put our examples.
You can try out your code using the Groovy script console provided by the Groovy plugin. Make sure you know what you’re doing !
The online JavaDoc for the Jenkins Java API is the source of truth, but can be tricky to navigate.
We wrote a simple object inspector method that shows you what type of object you’re working with.
Resources

•

Sample scripts - Scriptler plugin (https://
wiki.jenkins-ci.org/display/JENKINS/Scriptler
+Plugin) or GitHub repo (https://github.com/
jenkinsci/jenkins-scripts)

•
•

Script console in Jenkins - be careful !

•

Object inspector method

API JavaDoc: http://javadoc.jenkins-ci.org/
overview-summary.html

Tweet @garethbowles with feedback!
Monday, October 28, 13

There are a lot of sample scripts out there that may well do what you want. The Scriptler plugin gives you access to a hosted script
catalog. There’s also a GitHub repo with many examples - I find this easier to update so that’s where I’ve put our examples.
You can try out your code using the Groovy script console provided by the Groovy plugin. Make sure you know what you’re doing !
The online JavaDoc for the Jenkins Java API is the source of truth, but can be tricky to navigate.
We wrote a simple object inspector method that shows you what type of object you’re working with.
Object Inspector Method

Tweet @garethbowles with feedback!
Monday, October 28, 13

Here’s the handy object inspector method that display an object’s type, properties and methods. Once yuo know the type you can look in
the JavaDoc or search existing code to find out how to do what you want.
Be careful about testing !

Tweet @garethbowles with feedback!
Monday, October 28, 13

System Groovy scripts can do some serious damage ! You often want to loop over every job or build or slave, so be careful to test your
code.
I learned the hard way when I accidentally kicked off every job on our main Jenkins master.
We’ve made a few other mistakes too.
Tweet @garethbowles with feedback!
Monday, October 28, 13

Here’s another one where we accidentally disabled all the jobs in the system and then had to figure out how to identify the jobs that
should really be disabled. We keep this one around as a cautionary tale.
Developing scripts

Tweet @garethbowles with feedback!
Monday, October 28, 13

Always test your scripts on a local Jenkins instance; it’s pretty easy to create dummy jobs, builds and slaves.
For short scripts you can edit within Jenkins, but longer ones benefit from using a code editor or IDE with syntax highlighting and code
completion - way fewer missing brackets !
Once you’re done, check the code into SCM and have your Jenkins job sync it, so that you can keep the change history and you have a
backup of the code outside of Jenkins.
Developing scripts

•

Use a local Jenkins instance (java -jar
jenkins.war)

Tweet @garethbowles with feedback!
Monday, October 28, 13

Always test your scripts on a local Jenkins instance; it’s pretty easy to create dummy jobs, builds and slaves.
For short scripts you can edit within Jenkins, but longer ones benefit from using a code editor or IDE with syntax highlighting and code
completion - way fewer missing brackets !
Once you’re done, check the code into SCM and have your Jenkins job sync it, so that you can keep the change history and you have a
backup of the code outside of Jenkins.
Developing scripts

•

Use a local Jenkins instance (java -jar
jenkins.war)

•

Use the script console or inline code in the job
config. while developing

Tweet @garethbowles with feedback!
Monday, October 28, 13

Always test your scripts on a local Jenkins instance; it’s pretty easy to create dummy jobs, builds and slaves.
For short scripts you can edit within Jenkins, but longer ones benefit from using a code editor or IDE with syntax highlighting and code
completion - way fewer missing brackets !
Once you’re done, check the code into SCM and have your Jenkins job sync it, so that you can keep the change history and you have a
backup of the code outside of Jenkins.
Developing scripts

•

Use a local Jenkins instance (java -jar
jenkins.war)

•

Use the script console or inline code in the job
config. while developing

•

Code editor or IDE for longer scripts

Tweet @garethbowles with feedback!
Monday, October 28, 13

Always test your scripts on a local Jenkins instance; it’s pretty easy to create dummy jobs, builds and slaves.
For short scripts you can edit within Jenkins, but longer ones benefit from using a code editor or IDE with syntax highlighting and code
completion - way fewer missing brackets !
Once you’re done, check the code into SCM and have your Jenkins job sync it, so that you can keep the change history and you have a
backup of the code outside of Jenkins.
Developing scripts

•

Use a local Jenkins instance (java -jar
jenkins.war)

•

Use the script console or inline code in the job
config. while developing

•
•

Code editor or IDE for longer scripts
Check the script into SCM when it’s ready

Tweet @garethbowles with feedback!
Monday, October 28, 13

Always test your scripts on a local Jenkins instance; it’s pretty easy to create dummy jobs, builds and slaves.
For short scripts you can edit within Jenkins, but longer ones benefit from using a code editor or IDE with syntax highlighting and code
completion - way fewer missing brackets !
Once you’re done, check the code into SCM and have your Jenkins job sync it, so that you can keep the change history and you have a
backup of the code outside of Jenkins.
Awesome ! Where can I get
this stuff ?

•
•

https://github.com/jenkinsci/jenkins-scripts
http://scriptlerweb.appspot.com/catalog/list

Tweet @garethbowles with feedback!
Monday, October 28, 13

Here’s where you can get lots of System Groovy script goodness. I just added a bunch of our scripts that I mentioned in this talk.
Jenkins User Conference

Palo Alto , Oct 23 2013

Thank You To Our Sponsors
Platinum

Gold

Silver

Tweet @garethbowles with feedback!
Monday, October 28, 13

#jenkinsconf
Thank You !
Email: gbowles@{gmail,netflix}.com
Twitter: @garethbowles
Linkedin: www.linkedin.com/in/garethbowles
Want to do Jenkins development for your
day job ? We’re hiring ! http://
jobs.netflix.com
Tweet @garethbowles with feedback!
Monday, October 28, 13

Here’s how to get in touch.
We’re hiring for lots of positions, but in particular we’re looking for someone to own Jenkins at Netflix - all the way from keeping the
infrastructure running to writing custom plugins and fixing the Jenkins core. If you want to take Jenkins in new directions as your full
time job - with a heavy dose of cloud thrown in - come and find a Netflixer.
thanks again

More Related Content

What's hot

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
 
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 UsersAndrew Bayer
 
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
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 Tikal Knowledge
 
Jenkins Pipeline 101 and TCI - presentation and workshop
Jenkins Pipeline 101 and TCI - presentation and workshopJenkins Pipeline 101 and TCI - presentation and workshop
Jenkins Pipeline 101 and TCI - presentation and workshopYoram Michaeli
 
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
 
Jenkins Shared Libraries Workshop
Jenkins Shared Libraries WorkshopJenkins Shared Libraries Workshop
Jenkins Shared Libraries WorkshopJulien Pivotto
 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsMandi Walls
 
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
 
Jenkins days workshop pipelines - Eric Long
Jenkins days workshop  pipelines - Eric LongJenkins days workshop  pipelines - Eric Long
Jenkins days workshop pipelines - Eric Longericlongtx
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkinsAbe Diaz
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Dennys Hsieh
 
JUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made EasyJUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made EasyCloudBees
 
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
 
JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?CloudBees
 

What's hot (20)

Jenkins
JenkinsJenkins
Jenkins
 
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!)
 
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
 
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
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
 
From Virtual Machines to Containers
From Virtual Machines to ContainersFrom Virtual Machines to Containers
From Virtual Machines to Containers
 
Jenkins Pipelines
Jenkins PipelinesJenkins Pipelines
Jenkins Pipelines
 
Jenkins Pipeline 101 and TCI - presentation and workshop
Jenkins Pipeline 101 and TCI - presentation and workshopJenkins Pipeline 101 and TCI - presentation and workshop
Jenkins Pipeline 101 and TCI - presentation and workshop
 
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
 
Jenkins Shared Libraries Workshop
Jenkins Shared Libraries WorkshopJenkins Shared Libraries Workshop
Jenkins Shared Libraries Workshop
 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in Operations
 
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
 
Jenkins days workshop pipelines - Eric Long
Jenkins days workshop  pipelines - Eric LongJenkins days workshop  pipelines - Eric Long
Jenkins days workshop pipelines - Eric Long
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
 
JUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made EasyJUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made Easy
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
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
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?
 

Viewers also liked

Continuous Integration on my work
Continuous Integration on my workContinuous Integration on my work
Continuous Integration on my workMu Chun Wang
 
Why do Automated Builds Break? An Empirical Study (ICSME 2014)
Why do Automated Builds Break? An Empirical Study (ICSME 2014)Why do Automated Builds Break? An Empirical Study (ICSME 2014)
Why do Automated Builds Break? An Empirical Study (ICSME 2014)Bram Adams
 
Super Charged Configuration As Code
Super Charged Configuration As CodeSuper Charged Configuration As Code
Super Charged Configuration As CodeAlan Beale
 
Continuous Delivery of Puppet-Based Infrastructure - PuppetConf 2014
Continuous Delivery of Puppet-Based Infrastructure - PuppetConf 2014Continuous Delivery of Puppet-Based Infrastructure - PuppetConf 2014
Continuous Delivery of Puppet-Based Infrastructure - PuppetConf 2014Puppet
 
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...Puppet
 
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...Synchronizing parallel delivery flows in jenkins using groovy, build flow and...
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...Andrey Devyatkin
 
Writing a Jenkins / Hudson plugin
Writing a Jenkins / Hudson pluginWriting a Jenkins / Hudson plugin
Writing a Jenkins / Hudson pluginAnthony Dahanne
 
Simple Continous Integration
Simple Continous IntegrationSimple Continous Integration
Simple Continous IntegrationRicky Martaputra
 
groovy and concurrency
groovy and concurrencygroovy and concurrency
groovy and concurrencyPaul King
 
Jenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with JenkinsJenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with JenkinsAll Things Open
 
Continuous Development Pipeline
Continuous Development PipelineContinuous Development Pipeline
Continuous Development PipelineIzzet Mustafaiev
 
Building an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache GroovyBuilding an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache Groovyjgcloudbees
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP TutorialLorna Mitchell
 
continous integration and delivery
continous integration and deliverycontinous integration and delivery
continous integration and deliverySamarjeet Saurabh
 

Viewers also liked (16)

Continuous Integration on my work
Continuous Integration on my workContinuous Integration on my work
Continuous Integration on my work
 
Why do Automated Builds Break? An Empirical Study (ICSME 2014)
Why do Automated Builds Break? An Empirical Study (ICSME 2014)Why do Automated Builds Break? An Empirical Study (ICSME 2014)
Why do Automated Builds Break? An Empirical Study (ICSME 2014)
 
Super Charged Configuration As Code
Super Charged Configuration As CodeSuper Charged Configuration As Code
Super Charged Configuration As Code
 
Jenkins Job DSL plugin
Jenkins Job DSL plugin Jenkins Job DSL plugin
Jenkins Job DSL plugin
 
Continuous Delivery of Puppet-Based Infrastructure - PuppetConf 2014
Continuous Delivery of Puppet-Based Infrastructure - PuppetConf 2014Continuous Delivery of Puppet-Based Infrastructure - PuppetConf 2014
Continuous Delivery of Puppet-Based Infrastructure - PuppetConf 2014
 
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
 
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...Synchronizing parallel delivery flows in jenkins using groovy, build flow and...
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...
 
Writing a Jenkins / Hudson plugin
Writing a Jenkins / Hudson pluginWriting a Jenkins / Hudson plugin
Writing a Jenkins / Hudson plugin
 
Simple Continous Integration
Simple Continous IntegrationSimple Continous Integration
Simple Continous Integration
 
groovy and concurrency
groovy and concurrencygroovy and concurrency
groovy and concurrency
 
Jenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with JenkinsJenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with Jenkins
 
Groovy Maven Builds
Groovy Maven BuildsGroovy Maven Builds
Groovy Maven Builds
 
Continuous Development Pipeline
Continuous Development PipelineContinuous Development Pipeline
Continuous Development Pipeline
 
Building an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache GroovyBuilding an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache Groovy
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
 
continous integration and delivery
continous integration and deliverycontinous integration and delivery
continous integration and delivery
 

Similar to Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)

CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)Borislav Traykov
 
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development teamMoving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development teamPVS-Studio
 
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development teamMoving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development teamSofia Fateeva
 
Testing in Infrastructure
Testing in InfrastructureTesting in Infrastructure
Testing in InfrastructureMuhammet Arslan
 
AWS Lambda from the Trenches
AWS Lambda from the TrenchesAWS Lambda from the Trenches
AWS Lambda from the TrenchesYan Cui
 
Scaling Engineering with Docker
Scaling Engineering with DockerScaling Engineering with Docker
Scaling Engineering with DockerTom Leach
 
DevOps - Boldly Go for Distro
DevOps - Boldly Go for DistroDevOps - Boldly Go for Distro
DevOps - Boldly Go for DistroPaul Boos
 
Continuous deployment of Rails apps on AWS OpsWorks
Continuous deployment of Rails apps on AWS OpsWorksContinuous deployment of Rails apps on AWS OpsWorks
Continuous deployment of Rails apps on AWS OpsWorksTomaž Zaman
 
Golang @ Tokopedia
Golang @ TokopediaGolang @ Tokopedia
Golang @ TokopediaQasim Zaidi
 
Configuration as Code in Jenkins. What's new? Nov 2016
Configuration as Code in Jenkins. What's new? Nov 2016Configuration as Code in Jenkins. What's new? Nov 2016
Configuration as Code in Jenkins. What's new? Nov 2016Oleg Nenashev
 
DevOps Days Vancouver 2014 Slides
DevOps Days Vancouver 2014 SlidesDevOps Days Vancouver 2014 Slides
DevOps Days Vancouver 2014 SlidesAlex Cruise
 
Scaling Up Lookout
Scaling Up LookoutScaling Up Lookout
Scaling Up LookoutLookout
 
Automate Everything! (No stress development/Tallinn)
Automate Everything! (No stress development/Tallinn)Automate Everything! (No stress development/Tallinn)
Automate Everything! (No stress development/Tallinn)Arto Santala
 
Distributed Systems at Scale: Reducing the Fail
Distributed Systems at Scale:  Reducing the FailDistributed Systems at Scale:  Reducing the Fail
Distributed Systems at Scale: Reducing the FailKim Moir
 
Serverless in production, an experience report (Going Serverless, 28 Feb 2018)
Serverless in production, an experience report (Going Serverless, 28 Feb 2018)Serverless in production, an experience report (Going Serverless, 28 Feb 2018)
Serverless in production, an experience report (Going Serverless, 28 Feb 2018)Domas Lasauskas
 
Skynet project: Monitor, analyze, scale, and maintain a system in the Cloud
Skynet project: Monitor, analyze, scale, and maintain a system in the CloudSkynet project: Monitor, analyze, scale, and maintain a system in the Cloud
Skynet project: Monitor, analyze, scale, and maintain a system in the CloudSylvain Kalache
 
How we tested our code "Google way"
How we tested our code "Google way"How we tested our code "Google way"
How we tested our code "Google way"Oleksiy Rezchykov
 
Road to sbt 1.0 paved with server
Road to sbt 1.0   paved with serverRoad to sbt 1.0   paved with server
Road to sbt 1.0 paved with serverEugene Yokota
 
Cloudops fundamentals management, tdd, test driven design, continuous integra...
Cloudops fundamentals management, tdd, test driven design, continuous integra...Cloudops fundamentals management, tdd, test driven design, continuous integra...
Cloudops fundamentals management, tdd, test driven design, continuous integra...Bret Piatt
 

Similar to Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013) (20)

CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)
 
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development teamMoving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development team
 
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development teamMoving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development team
 
Testing in Infrastructure
Testing in InfrastructureTesting in Infrastructure
Testing in Infrastructure
 
AWS Lambda from the Trenches
AWS Lambda from the TrenchesAWS Lambda from the Trenches
AWS Lambda from the Trenches
 
Scaling Engineering with Docker
Scaling Engineering with DockerScaling Engineering with Docker
Scaling Engineering with Docker
 
DevOps - Boldly Go for Distro
DevOps - Boldly Go for DistroDevOps - Boldly Go for Distro
DevOps - Boldly Go for Distro
 
Continuous deployment of Rails apps on AWS OpsWorks
Continuous deployment of Rails apps on AWS OpsWorksContinuous deployment of Rails apps on AWS OpsWorks
Continuous deployment of Rails apps on AWS OpsWorks
 
Golang @ Tokopedia
Golang @ TokopediaGolang @ Tokopedia
Golang @ Tokopedia
 
Configuration as Code in Jenkins. What's new? Nov 2016
Configuration as Code in Jenkins. What's new? Nov 2016Configuration as Code in Jenkins. What's new? Nov 2016
Configuration as Code in Jenkins. What's new? Nov 2016
 
DevOps Days Vancouver 2014 Slides
DevOps Days Vancouver 2014 SlidesDevOps Days Vancouver 2014 Slides
DevOps Days Vancouver 2014 Slides
 
Scaling Up Lookout
Scaling Up LookoutScaling Up Lookout
Scaling Up Lookout
 
Automate Everything! (No stress development/Tallinn)
Automate Everything! (No stress development/Tallinn)Automate Everything! (No stress development/Tallinn)
Automate Everything! (No stress development/Tallinn)
 
Distributed Systems at Scale: Reducing the Fail
Distributed Systems at Scale:  Reducing the FailDistributed Systems at Scale:  Reducing the Fail
Distributed Systems at Scale: Reducing the Fail
 
Serverless in production, an experience report (Going Serverless, 28 Feb 2018)
Serverless in production, an experience report (Going Serverless, 28 Feb 2018)Serverless in production, an experience report (Going Serverless, 28 Feb 2018)
Serverless in production, an experience report (Going Serverless, 28 Feb 2018)
 
Skynet project: Monitor, analyze, scale, and maintain a system in the Cloud
Skynet project: Monitor, analyze, scale, and maintain a system in the CloudSkynet project: Monitor, analyze, scale, and maintain a system in the Cloud
Skynet project: Monitor, analyze, scale, and maintain a system in the Cloud
 
How we tested our code "Google way"
How we tested our code "Google way"How we tested our code "Google way"
How we tested our code "Google way"
 
Django Girls Tutorial
Django Girls TutorialDjango Girls Tutorial
Django Girls Tutorial
 
Road to sbt 1.0 paved with server
Road to sbt 1.0   paved with serverRoad to sbt 1.0   paved with server
Road to sbt 1.0 paved with server
 
Cloudops fundamentals management, tdd, test driven design, continuous integra...
Cloudops fundamentals management, tdd, test driven design, continuous integra...Cloudops fundamentals management, tdd, test driven design, continuous integra...
Cloudops fundamentals management, tdd, test driven design, continuous integra...
 

Recently uploaded

Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...FIDO Alliance
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Julian Hyde
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeCzechDreamin
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...CzechDreamin
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka DoktorováCzechDreamin
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessUXDXConf
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...FIDO Alliance
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Patrick Viafore
 
Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024TopCSSGallery
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCzechDreamin
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreelreely ones
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FIDO Alliance
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfFIDO Alliance
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxJennifer Lim
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty SecureFemke de Vroome
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfFIDO Alliance
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfSrushith Repakula
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...marcuskenyatta275
 

Recently uploaded (20)

Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreel
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 

Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)

  • 1. Managing Jenkins with Jenkins Tweet @garethbowles with feedback! Monday, October 28, 13 Hi, I’m Gareth from Netflix. It’s great to be back for my third JUC ! I’m going to talk about how we use Jenkins’ System Groovy Scripts feature to automate the management of our Jenkins infrastructure. I hope you’ll get inspired by some of these ideas to try them out yourselves. As this is a short talk there may not be much time for questions, but find me afterwards or tweet me if you want to follow up.
  • 2. @ • • • • • • 3200 jobs 3TB build data 6 masters ~100 slaves / ~250 executors 15% build failure rate All 700 engineers can set up / run jobs Tweet @garethbowles with feedback! Monday, October 28, 13 We have a pretty big Jenkins setup, it’s the centrepiece of the pipeline that builds our streaming service. Our main master has 3200 builds, 3TB of build data data We have a growing number of masters as we split jobs between different masters for speed and reliability Housekeeping and monitoring has to be automated due to this scale. We need to make sure our slaves are online, disk space for builds is kept under control, builds run on the right slaves, and be able to update the configuration of many jobs or slaves at a time. And because all our engineers have job configuration access, we need to make sure that some basic conventions are followed and nothing gets too out of control.
  • 3. How can we automate all the Jenkins things ? Tweet @garethbowles with feedback! Monday, October 28, 13 Jenkins has quite a few options for automation.
  • 4. How can we automate all the Jenkins things ? • Remote API - nice, but limited update functions Tweet @garethbowles with feedback! Monday, October 28, 13 Jenkins has quite a few options for automation.
  • 5. How can we automate all the Jenkins things ? • • Remote API - nice, but limited update functions Jenkins CLI - ditto Tweet @garethbowles with feedback! Monday, October 28, 13 Jenkins has quite a few options for automation.
  • 6. How can we automate all the Jenkins things ? • • • Remote API - nice, but limited update functions Jenkins CLI - ditto Custom plugins - powerful but heavyweight Tweet @garethbowles with feedback! Monday, October 28, 13 Jenkins has quite a few options for automation.
  • 7. A Better Option Tweet @garethbowles with feedback! Monday, October 28, 13 Here’s a more lightweight but still very powerful way to automate Jenkins tasks.
  • 8. System Groovy Scripts Tweet @garethbowles with feedback! Monday, October 28, 13 Using system Groovy scripts gives you full access to Jenkins’ JVM and object model just like a plugin, but the scripts are much easier to write and maintain. You get the benefit of Jenkins’ built in features for tracking script results, scheduling runs, notifying users of the results and visualizing data (with the plot plugin for example). Many of our needs aren’t generic enough to make it worth writing a plugin, anyway. But it’s always good to script a task, even if you think it’s a one-off - that way if you’re wrong you get to re-run it, and you can track it back easily if something goes wrong.
  • 9. System Groovy Scripts • Full access to the Jenkins master’s JVM Tweet @garethbowles with feedback! Monday, October 28, 13 Using system Groovy scripts gives you full access to Jenkins’ JVM and object model just like a plugin, but the scripts are much easier to write and maintain. You get the benefit of Jenkins’ built in features for tracking script results, scheduling runs, notifying users of the results and visualizing data (with the plot plugin for example). Many of our needs aren’t generic enough to make it worth writing a plugin, anyway. But it’s always good to script a task, even if you think it’s a one-off - that way if you’re wrong you get to re-run it, and you can track it back easily if something goes wrong.
  • 10. System Groovy Scripts • • Full access to the Jenkins master’s JVM Much quicker than writing a plugin Tweet @garethbowles with feedback! Monday, October 28, 13 Using system Groovy scripts gives you full access to Jenkins’ JVM and object model just like a plugin, but the scripts are much easier to write and maintain. You get the benefit of Jenkins’ built in features for tracking script results, scheduling runs, notifying users of the results and visualizing data (with the plot plugin for example). Many of our needs aren’t generic enough to make it worth writing a plugin, anyway. But it’s always good to script a task, even if you think it’s a one-off - that way if you’re wrong you get to re-run it, and you can track it back easily if something goes wrong.
  • 11. System Groovy Scripts • • • Full access to the Jenkins master’s JVM Much quicker than writing a plugin Make use of Jenkins' job scheduling, logging, notification and data visualization   Tweet @garethbowles with feedback! Monday, October 28, 13 Using system Groovy scripts gives you full access to Jenkins’ JVM and object model just like a plugin, but the scripts are much easier to write and maintain. You get the benefit of Jenkins’ built in features for tracking script results, scheduling runs, notifying users of the results and visualizing data (with the plot plugin for example). Many of our needs aren’t generic enough to make it worth writing a plugin, anyway. But it’s always good to script a task, even if you think it’s a one-off - that way if you’re wrong you get to re-run it, and you can track it back easily if something goes wrong.
  • 12. System Groovy Scripts • • • Full access to the Jenkins master’s JVM • Needs the Groovy plugin: https://wiki.jenkinsci.org/display/JENKINS/Groovy+plugin Much quicker than writing a plugin Make use of Jenkins' job scheduling, logging, notification and data visualization   Tweet @garethbowles with feedback! Monday, October 28, 13 Using system Groovy scripts gives you full access to Jenkins’ JVM and object model just like a plugin, but the scripts are much easier to write and maintain. You get the benefit of Jenkins’ built in features for tracking script results, scheduling runs, notifying users of the results and visualizing data (with the plot plugin for example). Many of our needs aren’t generic enough to make it worth writing a plugin, anyway. But it’s always good to script a task, even if you think it’s a one-off - that way if you’re wrong you get to re-run it, and you can track it back easily if something goes wrong.
  • 13. Examples Tweet @garethbowles with feedback! Monday, October 28, 13 Here are a few examples of the work we do with system Groovy scripts. If a job hasn’t built successfully in 90 days or more, we disable it to reduce the number of wasted executions of broken jobs. We can relabel a set of slaves with a given group of labels - useful if we want to update the configuration of our EC2 slaves, we can remove labels from the old slaves so that no more builds are sent to them, then wait for builds to finish before terminating them. We monitor our standard slave pool for builds that failed with remoting errors that can affect other builds, and disconnect / reconnect the slaves (a reconnect usually works, otherwise we leave the slave offline for analysis). We monitor custom build slaves and send notifications to the owners if they get disconnected. We scan all enabled jobs to make sure that the number of builds to keep is set (the default is to keep all builds, which can chew up disk space fast). We make sure that all jobs have the “restrict where this build can be run” field set, so that Linux builds don’t end up on a Windows slave for example.
  • 14. • Examples Disable old or broken jobs Tweet @garethbowles with feedback! Monday, October 28, 13 Here are a few examples of the work we do with system Groovy scripts. If a job hasn’t built successfully in 90 days or more, we disable it to reduce the number of wasted executions of broken jobs. We can relabel a set of slaves with a given group of labels - useful if we want to update the configuration of our EC2 slaves, we can remove labels from the old slaves so that no more builds are sent to them, then wait for builds to finish before terminating them. We monitor our standard slave pool for builds that failed with remoting errors that can affect other builds, and disconnect / reconnect the slaves (a reconnect usually works, otherwise we leave the slave offline for analysis). We monitor custom build slaves and send notifications to the owners if they get disconnected. We scan all enabled jobs to make sure that the number of builds to keep is set (the default is to keep all builds, which can chew up disk space fast). We make sure that all jobs have the “restrict where this build can be run” field set, so that Linux builds don’t end up on a Windows slave for example.
  • 15. • • Examples Disable old or broken jobs Relabel a set of slaves Tweet @garethbowles with feedback! Monday, October 28, 13 Here are a few examples of the work we do with system Groovy scripts. If a job hasn’t built successfully in 90 days or more, we disable it to reduce the number of wasted executions of broken jobs. We can relabel a set of slaves with a given group of labels - useful if we want to update the configuration of our EC2 slaves, we can remove labels from the old slaves so that no more builds are sent to them, then wait for builds to finish before terminating them. We monitor our standard slave pool for builds that failed with remoting errors that can affect other builds, and disconnect / reconnect the slaves (a reconnect usually works, otherwise we leave the slave offline for analysis). We monitor custom build slaves and send notifications to the owners if they get disconnected. We scan all enabled jobs to make sure that the number of builds to keep is set (the default is to keep all builds, which can chew up disk space fast). We make sure that all jobs have the “restrict where this build can be run” field set, so that Linux builds don’t end up on a Windows slave for example.
  • 16. • • • Examples Disable old or broken jobs Relabel a set of slaves Monitor slave uptime Tweet @garethbowles with feedback! Monday, October 28, 13 Here are a few examples of the work we do with system Groovy scripts. If a job hasn’t built successfully in 90 days or more, we disable it to reduce the number of wasted executions of broken jobs. We can relabel a set of slaves with a given group of labels - useful if we want to update the configuration of our EC2 slaves, we can remove labels from the old slaves so that no more builds are sent to them, then wait for builds to finish before terminating them. We monitor our standard slave pool for builds that failed with remoting errors that can affect other builds, and disconnect / reconnect the slaves (a reconnect usually works, otherwise we leave the slave offline for analysis). We monitor custom build slaves and send notifications to the owners if they get disconnected. We scan all enabled jobs to make sure that the number of builds to keep is set (the default is to keep all builds, which can chew up disk space fast). We make sure that all jobs have the “restrict where this build can be run” field set, so that Linux builds don’t end up on a Windows slave for example.
  • 17. • • • • Examples Disable old or broken jobs Relabel a set of slaves Monitor slave uptime Disconnect bad slaves Tweet @garethbowles with feedback! Monday, October 28, 13 Here are a few examples of the work we do with system Groovy scripts. If a job hasn’t built successfully in 90 days or more, we disable it to reduce the number of wasted executions of broken jobs. We can relabel a set of slaves with a given group of labels - useful if we want to update the configuration of our EC2 slaves, we can remove labels from the old slaves so that no more builds are sent to them, then wait for builds to finish before terminating them. We monitor our standard slave pool for builds that failed with remoting errors that can affect other builds, and disconnect / reconnect the slaves (a reconnect usually works, otherwise we leave the slave offline for analysis). We monitor custom build slaves and send notifications to the owners if they get disconnected. We scan all enabled jobs to make sure that the number of builds to keep is set (the default is to keep all builds, which can chew up disk space fast). We make sure that all jobs have the “restrict where this build can be run” field set, so that Linux builds don’t end up on a Windows slave for example.
  • 18. • • • • • Examples Disable old or broken jobs Relabel a set of slaves Monitor slave uptime Disconnect bad slaves Set number of builds to keep Tweet @garethbowles with feedback! Monday, October 28, 13 Here are a few examples of the work we do with system Groovy scripts. If a job hasn’t built successfully in 90 days or more, we disable it to reduce the number of wasted executions of broken jobs. We can relabel a set of slaves with a given group of labels - useful if we want to update the configuration of our EC2 slaves, we can remove labels from the old slaves so that no more builds are sent to them, then wait for builds to finish before terminating them. We monitor our standard slave pool for builds that failed with remoting errors that can affect other builds, and disconnect / reconnect the slaves (a reconnect usually works, otherwise we leave the slave offline for analysis). We monitor custom build slaves and send notifications to the owners if they get disconnected. We scan all enabled jobs to make sure that the number of builds to keep is set (the default is to keep all builds, which can chew up disk space fast). We make sure that all jobs have the “restrict where this build can be run” field set, so that Linux builds don’t end up on a Windows slave for example.
  • 19. • • • • • • Examples Disable old or broken jobs Relabel a set of slaves Monitor slave uptime Disconnect bad slaves Set number of builds to keep Check build labels Tweet @garethbowles with feedback! Monday, October 28, 13 Here are a few examples of the work we do with system Groovy scripts. If a job hasn’t built successfully in 90 days or more, we disable it to reduce the number of wasted executions of broken jobs. We can relabel a set of slaves with a given group of labels - useful if we want to update the configuration of our EC2 slaves, we can remove labels from the old slaves so that no more builds are sent to them, then wait for builds to finish before terminating them. We monitor our standard slave pool for builds that failed with remoting errors that can affect other builds, and disconnect / reconnect the slaves (a reconnect usually works, otherwise we leave the slave offline for analysis). We monitor custom build slaves and send notifications to the owners if they get disconnected. We scan all enabled jobs to make sure that the number of builds to keep is set (the default is to keep all builds, which can chew up disk space fast). We make sure that all jobs have the “restrict where this build can be run” field set, so that Linux builds don’t end up on a Windows slave for example.
  • 20. How do I figure out what to write ? Tweet @garethbowles with feedback! Monday, October 28, 13 Figuring out where to start writing a script can be tricky, but there are lots of resources available.
  • 21. Resources Tweet @garethbowles with feedback! Monday, October 28, 13 There are a lot of sample scripts out there that may well do what you want. The Scriptler plugin gives you access to a hosted script catalog. There’s also a GitHub repo with many examples - I find this easier to update so that’s where I’ve put our examples. You can try out your code using the Groovy script console provided by the Groovy plugin. Make sure you know what you’re doing ! The online JavaDoc for the Jenkins Java API is the source of truth, but can be tricky to navigate. We wrote a simple object inspector method that shows you what type of object you’re working with.
  • 22. • Resources Sample scripts - Scriptler plugin (https:// wiki.jenkins-ci.org/display/JENKINS/Scriptler +Plugin) or GitHub repo (https://github.com/ jenkinsci/jenkins-scripts) Tweet @garethbowles with feedback! Monday, October 28, 13 There are a lot of sample scripts out there that may well do what you want. The Scriptler plugin gives you access to a hosted script catalog. There’s also a GitHub repo with many examples - I find this easier to update so that’s where I’ve put our examples. You can try out your code using the Groovy script console provided by the Groovy plugin. Make sure you know what you’re doing ! The online JavaDoc for the Jenkins Java API is the source of truth, but can be tricky to navigate. We wrote a simple object inspector method that shows you what type of object you’re working with.
  • 23. Resources • Sample scripts - Scriptler plugin (https:// wiki.jenkins-ci.org/display/JENKINS/Scriptler +Plugin) or GitHub repo (https://github.com/ jenkinsci/jenkins-scripts) • Script console in Jenkins - be careful ! Tweet @garethbowles with feedback! Monday, October 28, 13 There are a lot of sample scripts out there that may well do what you want. The Scriptler plugin gives you access to a hosted script catalog. There’s also a GitHub repo with many examples - I find this easier to update so that’s where I’ve put our examples. You can try out your code using the Groovy script console provided by the Groovy plugin. Make sure you know what you’re doing ! The online JavaDoc for the Jenkins Java API is the source of truth, but can be tricky to navigate. We wrote a simple object inspector method that shows you what type of object you’re working with.
  • 24. Resources • Sample scripts - Scriptler plugin (https:// wiki.jenkins-ci.org/display/JENKINS/Scriptler +Plugin) or GitHub repo (https://github.com/ jenkinsci/jenkins-scripts) • • Script console in Jenkins - be careful ! API JavaDoc: http://javadoc.jenkins-ci.org/ overview-summary.html Tweet @garethbowles with feedback! Monday, October 28, 13 There are a lot of sample scripts out there that may well do what you want. The Scriptler plugin gives you access to a hosted script catalog. There’s also a GitHub repo with many examples - I find this easier to update so that’s where I’ve put our examples. You can try out your code using the Groovy script console provided by the Groovy plugin. Make sure you know what you’re doing ! The online JavaDoc for the Jenkins Java API is the source of truth, but can be tricky to navigate. We wrote a simple object inspector method that shows you what type of object you’re working with.
  • 25. Resources • Sample scripts - Scriptler plugin (https:// wiki.jenkins-ci.org/display/JENKINS/Scriptler +Plugin) or GitHub repo (https://github.com/ jenkinsci/jenkins-scripts) • • Script console in Jenkins - be careful ! • Object inspector method API JavaDoc: http://javadoc.jenkins-ci.org/ overview-summary.html Tweet @garethbowles with feedback! Monday, October 28, 13 There are a lot of sample scripts out there that may well do what you want. The Scriptler plugin gives you access to a hosted script catalog. There’s also a GitHub repo with many examples - I find this easier to update so that’s where I’ve put our examples. You can try out your code using the Groovy script console provided by the Groovy plugin. Make sure you know what you’re doing ! The online JavaDoc for the Jenkins Java API is the source of truth, but can be tricky to navigate. We wrote a simple object inspector method that shows you what type of object you’re working with.
  • 26. Resources • Sample scripts - Scriptler plugin (https:// wiki.jenkins-ci.org/display/JENKINS/Scriptler +Plugin) or GitHub repo (https://github.com/ jenkinsci/jenkins-scripts) • • Script console in Jenkins - be careful ! • Object inspector method API JavaDoc: http://javadoc.jenkins-ci.org/ overview-summary.html Tweet @garethbowles with feedback! Monday, October 28, 13 There are a lot of sample scripts out there that may well do what you want. The Scriptler plugin gives you access to a hosted script catalog. There’s also a GitHub repo with many examples - I find this easier to update so that’s where I’ve put our examples. You can try out your code using the Groovy script console provided by the Groovy plugin. Make sure you know what you’re doing ! The online JavaDoc for the Jenkins Java API is the source of truth, but can be tricky to navigate. We wrote a simple object inspector method that shows you what type of object you’re working with.
  • 27. Object Inspector Method Tweet @garethbowles with feedback! Monday, October 28, 13 Here’s the handy object inspector method that display an object’s type, properties and methods. Once yuo know the type you can look in the JavaDoc or search existing code to find out how to do what you want.
  • 28. Be careful about testing ! Tweet @garethbowles with feedback! Monday, October 28, 13 System Groovy scripts can do some serious damage ! You often want to loop over every job or build or slave, so be careful to test your code. I learned the hard way when I accidentally kicked off every job on our main Jenkins master. We’ve made a few other mistakes too.
  • 29. Tweet @garethbowles with feedback! Monday, October 28, 13 Here’s another one where we accidentally disabled all the jobs in the system and then had to figure out how to identify the jobs that should really be disabled. We keep this one around as a cautionary tale.
  • 30. Developing scripts Tweet @garethbowles with feedback! Monday, October 28, 13 Always test your scripts on a local Jenkins instance; it’s pretty easy to create dummy jobs, builds and slaves. For short scripts you can edit within Jenkins, but longer ones benefit from using a code editor or IDE with syntax highlighting and code completion - way fewer missing brackets ! Once you’re done, check the code into SCM and have your Jenkins job sync it, so that you can keep the change history and you have a backup of the code outside of Jenkins.
  • 31. Developing scripts • Use a local Jenkins instance (java -jar jenkins.war) Tweet @garethbowles with feedback! Monday, October 28, 13 Always test your scripts on a local Jenkins instance; it’s pretty easy to create dummy jobs, builds and slaves. For short scripts you can edit within Jenkins, but longer ones benefit from using a code editor or IDE with syntax highlighting and code completion - way fewer missing brackets ! Once you’re done, check the code into SCM and have your Jenkins job sync it, so that you can keep the change history and you have a backup of the code outside of Jenkins.
  • 32. Developing scripts • Use a local Jenkins instance (java -jar jenkins.war) • Use the script console or inline code in the job config. while developing Tweet @garethbowles with feedback! Monday, October 28, 13 Always test your scripts on a local Jenkins instance; it’s pretty easy to create dummy jobs, builds and slaves. For short scripts you can edit within Jenkins, but longer ones benefit from using a code editor or IDE with syntax highlighting and code completion - way fewer missing brackets ! Once you’re done, check the code into SCM and have your Jenkins job sync it, so that you can keep the change history and you have a backup of the code outside of Jenkins.
  • 33. Developing scripts • Use a local Jenkins instance (java -jar jenkins.war) • Use the script console or inline code in the job config. while developing • Code editor or IDE for longer scripts Tweet @garethbowles with feedback! Monday, October 28, 13 Always test your scripts on a local Jenkins instance; it’s pretty easy to create dummy jobs, builds and slaves. For short scripts you can edit within Jenkins, but longer ones benefit from using a code editor or IDE with syntax highlighting and code completion - way fewer missing brackets ! Once you’re done, check the code into SCM and have your Jenkins job sync it, so that you can keep the change history and you have a backup of the code outside of Jenkins.
  • 34. Developing scripts • Use a local Jenkins instance (java -jar jenkins.war) • Use the script console or inline code in the job config. while developing • • Code editor or IDE for longer scripts Check the script into SCM when it’s ready Tweet @garethbowles with feedback! Monday, October 28, 13 Always test your scripts on a local Jenkins instance; it’s pretty easy to create dummy jobs, builds and slaves. For short scripts you can edit within Jenkins, but longer ones benefit from using a code editor or IDE with syntax highlighting and code completion - way fewer missing brackets ! Once you’re done, check the code into SCM and have your Jenkins job sync it, so that you can keep the change history and you have a backup of the code outside of Jenkins.
  • 35. Awesome ! Where can I get this stuff ? • • https://github.com/jenkinsci/jenkins-scripts http://scriptlerweb.appspot.com/catalog/list Tweet @garethbowles with feedback! Monday, October 28, 13 Here’s where you can get lots of System Groovy script goodness. I just added a bunch of our scripts that I mentioned in this talk.
  • 36. Jenkins User Conference Palo Alto , Oct 23 2013 Thank You To Our Sponsors Platinum Gold Silver Tweet @garethbowles with feedback! Monday, October 28, 13 #jenkinsconf
  • 37. Thank You ! Email: gbowles@{gmail,netflix}.com Twitter: @garethbowles Linkedin: www.linkedin.com/in/garethbowles Want to do Jenkins development for your day job ? We’re hiring ! http:// jobs.netflix.com Tweet @garethbowles with feedback! Monday, October 28, 13 Here’s how to get in touch. We’re hiring for lots of positions, but in particular we’re looking for someone to own Jenkins at Netflix - all the way from keeping the infrastructure running to writing custom plugins and fixing the Jenkins core. If you want to take Jenkins in new directions as your full time job - with a heavy dose of cloud thrown in - come and find a Netflixer. thanks again