SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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?
 

Destaque

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
 

Destaque (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
 

Semelhante a 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 teamSofia Fateeva
 
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
 
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
 

Semelhante a 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...
 

Último

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
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
 
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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
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
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
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
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
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
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Último (20)

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
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
 
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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
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
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
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
 
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
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
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?
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

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