SlideShare une entreprise Scribd logo
1  sur  48
© 2015 IBM
Corporation
Jenkins 101
Getting Started With Jenkins!
Lorelei McCollum
IBM Verse Test Architect
lmccollu@us.ibm.com
© 2015 IBM
Corporation
2 November 20, 2015
●
● Install
● Build
● Design First
● Configuring Jenkins jobs
● Parameterize
● Workspace
● Jenkins Nodes
● Security
● Source Control for jobs
● Groovy
● Plugins
●
Getting started with Jenkins
© 2015 IBM
Corporation
3 November 20, 2015
Installing Jenkins
 Easy instructions to follow for whatever operatin system you choose on Jenkins-CI.org
– Supports Various Linux/Unix installations as well as Windows

 https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins


© 2015 IBM
Corporation
4 November 20, 2015
● What is a Jenkins “Build”?
●
● Not necessarily a product build
●
● Build is to a Jenkins job as a main method is to java class
●
●
Jenkins “Build”
© 2015 IBM
Corporation
5 November 20, 2015
3 Main Parts to a Jenkins Job
Pre Build
Build
Post Build
●
Job allows for custom configuration of all these steps via various plugins
●
●
Need to understand the “Config” of a job before you create one
●
●
Understand what the job can do for you!
●
●
Plugins can contribute anywhere! They determine what actions you have
© 2015 IBM
Corporation
6 November 20, 2015
Examples of Build Actions
© 2015 IBM
Corporation
7 November 20, 2015
Examples of Post Build actions
© 2015 IBM
Corporation
8 November 20, 2015
Design First
● Re-Configuring jobs can be painful and tedious
●
● Design jobs so they are easy to update/modify
●
● What could change in your pipeline over time, think ahead!
●
● Understand the Jenkins job and all the pre/post build options
●
● Start/Stop/Restart pipelines from any step
●
● Debugging your pipeline
●
● Use source control for storing all aspects of your pipeline (Extended Choice Parameter)
●
● Start small, then expand, use naming conventions (Nested View Plugin)
●
● Design out your pipeline ahead of time, then implement in Jenkins
© 2015 IBM
Corporation
9 November 20, 2015
Configuring Jenkins Jobs
● Anything command line - Jenkins can execute
●
● Don't hard-code things that could change (Extended Choice Parameter Plugin)
●
● Security – who can build and configure (Matrix Authorization Strategy Plugin)
●
● Jenkins job results (xUnit Plugin)
●
● Post processing of results (Publish jUnit/xUnit results, Email-ext plugin)
●
● Use the workspace to your benefit
●
● Create and pass environment variables (Environment Injector Plugin)
●
● There may be a better solution than using “blocking jobs”
●
● How to maintain your jobs/slave nodes/pipeline?
●
© 2015 IBM
Corporation
10 November 20, 2015
Parameterize
● Allows Job re-use
●
● Easy to maintain and update
●
● Think about how often jobs could change
●
● Think about your entire pipeline
●
● What happens when you have a new release/version of your
product?
●
● Params change, use source control for them (Extended Choice Parameter Plugin)
●
● Can help you to scale and run more in parallel without the added
maintenance of duplicate jobs (Multi-job Plugin)
© 2015 IBM
Corporation
11 November 20, 2015
How do you get a “build” with parameters
© 2015 IBM
Corporation
12 November 20, 2015
●
Job Names –
●
Think about what different types of jobs you will have an see if you can
adopt a naming convention. Spaces in job names may make remote
calling of this job hard
●
●
Parameter Names –
●
Think about how the job will be called. Spaces in your parameter names
can make remote calling of this job hard
●
●
Build Name –
●
Can set this to use environment variables to be easily readable by user
●
●
Spaces can make your life harder, if you don't need them, don't use them
●
You_can_use_this_style_instead and will make remote API's easier to
use
Naming Conventions
© 2015 IBM
Corporation
13 November 20, 2015
Jenkins Workspace
● All Jenkins jobs have their “own” workspace on the node
they run on
●
● Artifacts get stored for a given build and copied into the
workspace
●
● Use the workspace to your benefit
●
● Save job state
●
● If Jenkins is restarted, jobs currently executing are lost
●
● Can force jobs to use a custom workspace
●
● Concurrent jobs get a “@<int> type workspace name if
more than one are going at the same time
© 2015 IBM
Corporation
14 November 20, 2015
Jenkins Nodes
● Easy to create in Manage Jenkins
●
● Term Executors refers to how many jobs can be running concurently on
that node
●
● Can choose how you want them connected to Jenkins
●
● JNLP for windows works well
● Can set up as service or use a batch file that gets called on startup
●
● SSH works well for unix/linux
●
● Can use Jenkins API or groovy to create nodes dynamically
●
● Best Practice: Limit how many executors you give your master
© 2015 IBM
Corporation
15 November 20, 2015
Creating a new “Dumb Node”
© 2015 IBM
Corporation
16 November 20, 2015
Connecting & Usage of your new node
 Choose your connect method




 Choose how the slave is used by the jobs



 If you don't specify it will default to “utilizing this node as much as possible”
© 2015 IBM
Corporation
17 November 20, 2015
How do you decide which jobs go to which nodes?
●
If don't have to specify, Jenkins will choose a node with executors available
●
●
Can specify in the job itself
Choose label or node name
●
●
●
Best to use naming standards and assign “labels” to your nodes to group or
categorize them
●
●
When you create nodes you can determine what can run on them as well
●
●
●
© 2015 IBM
Corporation
18 November 20, 2015
Plugins for Job Node Assignment
● Various plugins allow for UI options to choose the “label” or “Node” to run
the job against
(NodeLabel Parameter Plugin)
●
● Groovy script can decide as well based on user parameters
(Groovy Label Assignment Plugin )
© 2015 IBM
Corporation
19 November 20, 2015
Groovy Label Assignment Plugin
© 2015 IBM
Corporation
20 November 20, 2015
NodeLabel Parameter Plugin - Node
© 2015 IBM
Corporation
21 November 20, 2015
NodeLabel Parameter Plugin - Label
© 2015 IBM
Corporation
22 November 20, 2015
Security Of Jenkins
● Different ways you can lock down your Jenkins server
●
● Think about who you want to have access
●
● How you control your access and ensure the right people have
access
●
● Look at using groups to control access
●
● JenkinsRead – can only read and see and search and login
● JenkinsDevelopment – can create new jobs, configure jobs,
create nodes
● JenkinsAdmin – Administer the Jenkins server
●
● Global Security trumps job based security
© 2015 IBM
Corporation
23 November 20, 2015
Matrix Authorization Strategy Plugin – global level
● Global trumps project based
●
● Groups allow for adding/removing people easily
●
● There are a lot of options, having Admins manually adding people can get tedious
●
● Lock down Anonymous!
JenkinsAdmin
JenkinsDev
JenkinsRead
© 2015 IBM
Corporation
24 November 20, 2015
Matrix Authorization Strategy Plugin – job level
● Teams can set up their own groups to control access to their jobs
●
● Makes it easy to add/remove people without updating the job itself
●
● Teams own their jobs, don't need Admin to update access
© 2015 IBM
Corporation
25 November 20, 2015
Source Control for Jobs
● Can store your job config, scripts, shell scripts,batch files and artifacts your job needs
in source and pull from source at job runtime
●
● Should try not to put script code directly into the jenkins job and instead reference a
file in the workspace
● There are exceptions to this, when you don't need to put a script in source
●
● Can use the source control integration to deploy these artifacts at build time to the
workspace and then use them to execute your build
●
● Having a “jenkins-config” allows you to track and make changes to your jenkins jobs!
●
● Set up your jobs source code management section to pull code from this repository
●
●
© 2015 IBM
Corporation
26 November 20, 2015
Implementing source control for jenkins job scripts
Create a jenkins job to build this source project:
Name: Admin Update Pipeline Config
© 2015 IBM
Corporation
27 November 20, 2015
Pull the scripts from source in your other jenkins jobs
Now to use these scripts directly from source
© 2015 IBM
Corporation
28 November 20, 2015
Pulling job parameter options from source!
© 2015 IBM
Corporation
29 November 20, 2015
Pull groovy scripts directly from source!
Call the scripts directly from Admin Update Pipeline Config
Groovy Postbuild runs on the master and same with the Email-ext pre-send script
© 2015 IBM
Corporation
30 November 20, 2015
Groovy
● Is an agile and dynamic language for the Java Virtual Machine
●
● Is a shortened syntax, looks a lot like java, and understands java syntax
●
● Jenkins jobs can execute groovy scripts (Groovy plugin)
●
● You can do a lot with your pipeline dynamically with groovy scripts
●
●
● Groovy Script vs System Groovy Script
●
● The plain "Groovy Script" is run in a forked JVM, on the slave where the build is
run. It's the basically the same as running the "groovy" command and pass in the
script.
●
● The system groovy script, OTOH, runs inside the Jenkins master's JVM. Thus it
will have access to all the internal objects of Jenkins, so you can use this to alter
the state of Jenkins
●
●
●
●
●
© 2015 IBM
Corporation
31 November 20, 2015
Some useful groovy snippets!
Most of these scripts will
require some imports
such as:
import jenkins.model.*
import hudson.model.*
import hudson.slaves.*
//function to poll how many jobs running on a given slave
def polljobs(node){
for (slave in jenkins.model.Jenkins.instance.slaves) {
if (slave.name.equals(node)){
return slave.getComputer().countBusy()
}
}
return -1
}
slave & slave.getComputer() has all sorts of methods you can access off it – google the javadoc!
///function for determing if a node is online
def isonline(node){
for (slave in jenkins.model.Jenkins.instance.slaves) {
if (slave.name.equals(node)){
return slave.getComputer().isOnline()
}
}
return false
}
© 2015 IBM
Corporation
32 November 20, 2015
Groovy Snippet to restart a node
///function to restart a node
def restart(node){
for (slave in jenkins.model.Jenkins.instance.slaves) {
if (slave.name.equals(node)){
def channel = slave.getComputer().getChannel()
RemotingDiagnostics.executeGroovy( """
if (Functions.isWindows()) {
'shutdown /r /t 10 /c "Restarting after Jenkins test
completed"'.execute()
} else {
"sudo reboot".execute()
}
""", channel)
}
}
}
© 2015 IBM
Corporation
33 November 20, 2015
Create Reports and links for your jobs
 Can create quick links and email reports for the job that ran
 Use Groovy to loop through subbuilds and their artifacts and results and
expose the data you want

 Use Groovy Postbuild plugin or Groovy system scripts
© 2015 IBM
Corporation
34 November 20, 2015
Groovy Quick Links with Groovy Postbuild Plugin
def testResult = manager.build.testResultAction
if(testResult != null){
testResult = manager.build.testResultAction.result
def total = testResult.totalCount
def fail = testResult.failCount
manager.build.setDescription("${total} VPs <br> ${fail} Failures")
}
//logs the quick link on the jenkins build page
def logQuickLink(result,link,text) {
if(link != null){
if(!result.equals("SUCCESS")){
manager.createSummary("folder.gif").appendText("<h1>FAILED ${text} <a
href="${link}">Result Viewer</a></h1>", false, false, false, "red")
}
}else{
manager.createSummary("error.gif").appendText("<h1>${text} No Results </h1>",
false, false, false, "red")
}
}
© 2015 IBM
Corporation
35 November 20, 2015
Groovy Quick Links with Groovy System Script
import org.jvnet.hudson.plugins.groovypostbuild.GroovyPostbuildSummaryAction
GroovyPostbuildSummaryAction action=
logQuickLink(buildResult,logViewerURL,shortName,listener);
if(action != null){
build.getActions().add(action);
}
Assumes you already created a build variable and that you have a function
similar to previous page that creates this GroovyPosbuildSummaryAction object
© 2015 IBM
Corporation
36 November 20, 2015
PLUGINS!
© 2015 IBM
Corporation
37 November 20, 2015
Build Time-out Plugin
© 2015 IBM
Corporation
38 November 20, 2015
Environment Injector Plugin
● What happens in a build step is scoped to that step
●
● Not obvious how to pass environment params across build steps
●
● This plugin lets you do this
●
● In one build step, write out parameters or things you want to save to a
properties file in the WORKSPACE
●
● Then in the next build step use the Inject environment variables option
●
© 2015 IBM
Corporation
39 November 20, 2015
Build-Name Setter Plugin
● Operating System & Stream are build parameters to this job
●
● Changes what you see in the build history!
●
● Supports environment variables and parameters
●
● Especially helpful for builds with parameters
© 2015 IBM
Corporation
40 November 20, 2015
Multi Job Plugin
Phases are sequential whilst jobs inside each Phase are parallel
When creating new Jenkins job you have an option to create MultiJob project.
●
●
This job can define in the Build section phases that contains one job or more.
●
●
All jobs belong to one phase will be executed in parallel (if there are enough executors on the
node)
●
●
All jobs in phase 2 will be executed only after jobs in phase 1 are completed etc.
© 2015 IBM
Corporation
41 November 20, 2015
Nested View Plugin
● Nested Folders within a view
●
● Hide views and jobs from other areas
© 2015 IBM
Corporation
42 November 20, 2015
Nested View Plugin – click into a “nested folder”
© 2015 IBM
Corporation
43 November 20, 2015
Email-ext plugin
●
Advanced settings gives you the ability to execute some groovy code to
modify the email based on the build that executed
●
●
Can use environment variables in the subject and body of the email to be
sent
●
●
Set up triggers to determine when to send the email and to who
© 2015 IBM
Corporation
44 November 20, 2015
Email-ext plugin
© 2015 IBM
Corporation
45 November 20, 2015
Email-ext plugin
advanced section
(can use a script in
source too!)
© 2015 IBM
Corporation
46 November 20, 2015
Useful Plugins Covered in Presentation
● Build-Name Setter Plugin
● Conditional Build Step Plugin
● Downstream Build View Plugin
● Environment Injector Plugin
● Extended Choice Parameter Plugin
● Multi Job Plugin
● Groovy Plugin
● Parameterized Trigger Plugin
● Groovy Label Assignment Plugin
● Nested View Plugin
● Run Condition Plugin
● Show Build parameters Plugin
● View Job Filters Plugin
●
● Groovy PostBuild Plugin
● Junit Plugin
● Xunit Plugin
● Claim Plugin
● EnvInject Plugin
● TeamConcert Plugin
● Build User Vars Plugin
● Log Parser Plugin
● Flexible Publish Plugin
● Build-time-out Plugin
● Copy Artifact Plugin
● NodeLabel Parameter Plugin
● Email-ext plugin
© 2015 IBM
Corporation
47 November 20, 2015
Stuck? Need Help?
● Google is your friend, especially stackoverflow
●
● Jenkins book by O'Reilly
●
● Forums, communities, use social platforms
●
● Chances are other people have had your question and may have a solution
●
● Tons of plugins out there
●
● Create your own plugin, or help contribute to enhance/fix existing plugins
●
● Report bugs/issues
●
● Helpful Links
● http://jenkins-ci.org/
● http://www.cloudbees.com/jenkins
●
© 2015 IBM
Corporation
48 November 20, 2015
Questions?

Contenu connexe

Tendances

Master Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins PlatformMaster Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins Platformdcjuengst
 
Dockerizing your java development environment
Dockerizing your java development environmentDockerizing your java development environment
Dockerizing your java development environmentBuhake Sindi
 
It Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software DevelopmentIt Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software DevelopmentCarlos Perez
 
Jenkins Scriptler in 90mins
Jenkins Scriptler in 90minsJenkins Scriptler in 90mins
Jenkins Scriptler in 90minsLarry Cai
 
JUC Europe 2015: Scaling Your Jenkins Master with Docker
JUC Europe 2015: Scaling Your Jenkins Master with DockerJUC Europe 2015: Scaling Your Jenkins Master with Docker
JUC Europe 2015: Scaling Your Jenkins Master with DockerCloudBees
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java worldAshok Kumar
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkinsAbe Diaz
 
Jenkins, pipeline and docker
Jenkins, pipeline and docker Jenkins, pipeline and docker
Jenkins, pipeline and docker AgileDenver
 
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
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To JenkinsKnoldus Inc.
 
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and ComposeDockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and ComposeDocker, Inc.
 
How to write a Dockerfile
How to write a DockerfileHow to write a Dockerfile
How to write a DockerfileKnoldus Inc.
 
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
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins UsersJules Pierre-Louis
 
DrupalCon Los Angeles - Continuous Integration Toolbox
DrupalCon Los Angeles - Continuous Integration ToolboxDrupalCon Los Angeles - Continuous Integration Toolbox
DrupalCon Los Angeles - Continuous Integration ToolboxAndrii Podanenko
 
MoldCamp - multidimentional testing workflow. CIBox.
MoldCamp  - multidimentional testing workflow. CIBox.MoldCamp  - multidimentional testing workflow. CIBox.
MoldCamp - multidimentional testing workflow. CIBox.Andrii Podanenko
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Controlindiver
 
Pragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePiotr Pelczar
 

Tendances (20)

Master Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins PlatformMaster Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins Platform
 
Dockerizing your java development environment
Dockerizing your java development environmentDockerizing your java development environment
Dockerizing your java development environment
 
It Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software DevelopmentIt Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software Development
 
Jenkins Scriptler in 90mins
Jenkins Scriptler in 90minsJenkins Scriptler in 90mins
Jenkins Scriptler in 90mins
 
JUC Europe 2015: Scaling Your Jenkins Master with Docker
JUC Europe 2015: Scaling Your Jenkins Master with DockerJUC Europe 2015: Scaling Your Jenkins Master with Docker
JUC Europe 2015: Scaling Your Jenkins Master with Docker
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java world
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Jenkins, pipeline and docker
Jenkins, pipeline and docker Jenkins, pipeline and docker
Jenkins, pipeline and docker
 
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
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
 
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and ComposeDockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
 
GlassFish Embedded API
GlassFish Embedded APIGlassFish Embedded API
GlassFish Embedded API
 
How to write a Dockerfile
How to write a DockerfileHow to write a Dockerfile
How to write a Dockerfile
 
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
 
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
 
DrupalCon Los Angeles - Continuous Integration Toolbox
DrupalCon Los Angeles - Continuous Integration ToolboxDrupalCon Los Angeles - Continuous Integration Toolbox
DrupalCon Los Angeles - Continuous Integration Toolbox
 
MoldCamp - multidimentional testing workflow. CIBox.
MoldCamp  - multidimentional testing workflow. CIBox.MoldCamp  - multidimentional testing workflow. CIBox.
MoldCamp - multidimentional testing workflow. CIBox.
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Control
 
From Virtual Machines to Containers
From Virtual Machines to ContainersFrom Virtual Machines to Containers
From Virtual Machines to Containers
 
Pragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecture
 

En vedette

Terracotta Ehcache : Simpler, faster, distributed
Terracotta Ehcache : Simpler, faster, distributedTerracotta Ehcache : Simpler, faster, distributed
Terracotta Ehcache : Simpler, faster, distributedAnthony Dahanne
 
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
 
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)Gareth Bowles
 
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
 
How Companies can Effectively Work with Open Source Communities
How Companies can Effectively Work with Open Source CommunitiesHow Companies can Effectively Work with Open Source Communities
How Companies can Effectively Work with Open Source CommunitiesAll Things Open
 
Graphs are Eating the World
Graphs are Eating the WorldGraphs are Eating the World
Graphs are Eating the WorldAll Things Open
 
Understanding Open Source Licenses
Understanding Open Source LicensesUnderstanding Open Source Licenses
Understanding Open Source LicensesAll Things Open
 
How To Get Your Next Job as a Developer
How To Get Your Next Job as a DeveloperHow To Get Your Next Job as a Developer
How To Get Your Next Job as a DeveloperAll Things Open
 
Student Pipeline to Open Source Communities using HFOSS
Student Pipeline to Open Source Communities using HFOSSStudent Pipeline to Open Source Communities using HFOSS
Student Pipeline to Open Source Communities using HFOSSAll Things Open
 
Building the Right Platform Architecture for Hadoop
Building the Right Platform Architecture for HadoopBuilding the Right Platform Architecture for Hadoop
Building the Right Platform Architecture for HadoopAll Things Open
 
Writing a Jenkins / Hudson plugin
Writing a Jenkins / Hudson pluginWriting a Jenkins / Hudson plugin
Writing a Jenkins / Hudson pluginAnthony Dahanne
 
BFFs: UX & SEO Partnering to Design Successful Products
BFFs: UX & SEO Partnering to Design Successful ProductsBFFs: UX & SEO Partnering to Design Successful Products
BFFs: UX & SEO Partnering to Design Successful ProductsAll Things Open
 
Building a Distributed & Automated Open Source Program at Netflix
Building a Distributed & Automated Open Source Program at NetflixBuilding a Distributed & Automated Open Source Program at Netflix
Building a Distributed & Automated Open Source Program at NetflixAll Things Open
 
Contribution & Confidence
Contribution & ConfidenceContribution & Confidence
Contribution & ConfidenceAll Things Open
 
Civic Hacking 201: Successful techniques for civic tech
Civic Hacking 201: Successful techniques for civic techCivic Hacking 201: Successful techniques for civic tech
Civic Hacking 201: Successful techniques for civic techAll Things Open
 
Modern Container Orchestration (Without Breaking the Bank)
Modern Container Orchestration (Without Breaking the Bank)Modern Container Orchestration (Without Breaking the Bank)
Modern Container Orchestration (Without Breaking the Bank)All Things Open
 

En vedette (20)

Terracotta Ehcache : Simpler, faster, distributed
Terracotta Ehcache : Simpler, faster, distributedTerracotta Ehcache : Simpler, faster, distributed
Terracotta Ehcache : Simpler, faster, distributed
 
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
 
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
 
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...
 
The Power of Openness
The Power of OpennessThe Power of Openness
The Power of Openness
 
How Companies can Effectively Work with Open Source Communities
How Companies can Effectively Work with Open Source CommunitiesHow Companies can Effectively Work with Open Source Communities
How Companies can Effectively Work with Open Source Communities
 
Graphs are Eating the World
Graphs are Eating the WorldGraphs are Eating the World
Graphs are Eating the World
 
Understanding Open Source Licenses
Understanding Open Source LicensesUnderstanding Open Source Licenses
Understanding Open Source Licenses
 
How To Get Your Next Job as a Developer
How To Get Your Next Job as a DeveloperHow To Get Your Next Job as a Developer
How To Get Your Next Job as a Developer
 
Student Pipeline to Open Source Communities using HFOSS
Student Pipeline to Open Source Communities using HFOSSStudent Pipeline to Open Source Communities using HFOSS
Student Pipeline to Open Source Communities using HFOSS
 
Building the Right Platform Architecture for Hadoop
Building the Right Platform Architecture for HadoopBuilding the Right Platform Architecture for Hadoop
Building the Right Platform Architecture for Hadoop
 
Writing a Jenkins / Hudson plugin
Writing a Jenkins / Hudson pluginWriting a Jenkins / Hudson plugin
Writing a Jenkins / Hudson plugin
 
BFFs: UX & SEO Partnering to Design Successful Products
BFFs: UX & SEO Partnering to Design Successful ProductsBFFs: UX & SEO Partnering to Design Successful Products
BFFs: UX & SEO Partnering to Design Successful Products
 
Building a Distributed & Automated Open Source Program at Netflix
Building a Distributed & Automated Open Source Program at NetflixBuilding a Distributed & Automated Open Source Program at Netflix
Building a Distributed & Automated Open Source Program at Netflix
 
Contribution & Confidence
Contribution & ConfidenceContribution & Confidence
Contribution & Confidence
 
Civic Hacking 201: Successful techniques for civic tech
Civic Hacking 201: Successful techniques for civic techCivic Hacking 201: Successful techniques for civic tech
Civic Hacking 201: Successful techniques for civic tech
 
Modern Container Orchestration (Without Breaking the Bank)
Modern Container Orchestration (Without Breaking the Bank)Modern Container Orchestration (Without Breaking the Bank)
Modern Container Orchestration (Without Breaking the Bank)
 

Similaire à Jenkins 101: Continuos Integration with Jenkins

Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.Ohad Basan
 
Survival of the Continuist
Survival of the ContinuistSurvival of the Continuist
Survival of the ContinuistPaul Blundell
 
IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy: A Collaborative Recipe...
IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy:  A Collaborative Recipe...IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy:  A Collaborative Recipe...
IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy: A Collaborative Recipe...William Holmes
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdfMahmoudAlnmr1
 
The state of Jenkins pipelines or do I still need freestyle jobs
The state of Jenkins pipelines or do I still need freestyle jobsThe state of Jenkins pipelines or do I still need freestyle jobs
The state of Jenkins pipelines or do I still need freestyle jobsAndrey Devyatkin
 
CI and other tools for feature branch development
CI and other tools for feature branch developmentCI and other tools for feature branch development
CI and other tools for feature branch developmentYuriy Gerasimov
 
Node & Express as Workflow Tools
Node & Express as Workflow ToolsNode & Express as Workflow Tools
Node & Express as Workflow ToolsFITC
 
MBLTDev15: Brigit Lyons, Soundcloud
MBLTDev15: Brigit Lyons, SoundcloudMBLTDev15: Brigit Lyons, Soundcloud
MBLTDev15: Brigit Lyons, Soundcloude-Legion
 
DevOps World | Jenkins World 2018 and The Future of Jenkins
DevOps World | Jenkins World 2018 and The Future of JenkinsDevOps World | Jenkins World 2018 and The Future of Jenkins
DevOps World | Jenkins World 2018 and The Future of JenkinsNigel Charman
 
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...Samsul Ma'arif
 
Odo improving the developer experience on OpenShift - hack &amp; sangria
Odo   improving the developer experience on OpenShift - hack &amp; sangriaOdo   improving the developer experience on OpenShift - hack &amp; sangria
Odo improving the developer experience on OpenShift - hack &amp; sangriaJorge Morales
 
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
 
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...Nico Meisenzahl
 
Testing Rest with Spring by Kostiantyn Baranov (Senior Software Engineer, Gl...
Testing Rest with Spring  by Kostiantyn Baranov (Senior Software Engineer, Gl...Testing Rest with Spring  by Kostiantyn Baranov (Senior Software Engineer, Gl...
Testing Rest with Spring by Kostiantyn Baranov (Senior Software Engineer, Gl...GlobalLogic Ukraine
 
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonEclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonVladLica
 
Web worker in your angular application
Web worker in your angular applicationWeb worker in your angular application
Web worker in your angular applicationSuresh Patidar
 
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Binary Studio
 

Similaire à Jenkins 101: Continuos Integration with Jenkins (20)

JenkinsCI
JenkinsCIJenkinsCI
JenkinsCI
 
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
 
Survival of the Continuist
Survival of the ContinuistSurvival of the Continuist
Survival of the Continuist
 
Continuous integration (eng)
Continuous integration (eng)Continuous integration (eng)
Continuous integration (eng)
 
IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy: A Collaborative Recipe...
IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy:  A Collaborative Recipe...IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy:  A Collaborative Recipe...
IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy: A Collaborative Recipe...
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdf
 
jenkins.pdf
jenkins.pdfjenkins.pdf
jenkins.pdf
 
The state of Jenkins pipelines or do I still need freestyle jobs
The state of Jenkins pipelines or do I still need freestyle jobsThe state of Jenkins pipelines or do I still need freestyle jobs
The state of Jenkins pipelines or do I still need freestyle jobs
 
CI and other tools for feature branch development
CI and other tools for feature branch developmentCI and other tools for feature branch development
CI and other tools for feature branch development
 
Node & Express as Workflow Tools
Node & Express as Workflow ToolsNode & Express as Workflow Tools
Node & Express as Workflow Tools
 
MBLTDev15: Brigit Lyons, Soundcloud
MBLTDev15: Brigit Lyons, SoundcloudMBLTDev15: Brigit Lyons, Soundcloud
MBLTDev15: Brigit Lyons, Soundcloud
 
DevOps World | Jenkins World 2018 and The Future of Jenkins
DevOps World | Jenkins World 2018 and The Future of JenkinsDevOps World | Jenkins World 2018 and The Future of Jenkins
DevOps World | Jenkins World 2018 and The Future of Jenkins
 
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
 
Odo improving the developer experience on OpenShift - hack &amp; sangria
Odo   improving the developer experience on OpenShift - hack &amp; sangriaOdo   improving the developer experience on OpenShift - hack &amp; sangria
Odo improving the developer experience on OpenShift - hack &amp; sangria
 
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!)
 
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
 
Testing Rest with Spring by Kostiantyn Baranov (Senior Software Engineer, Gl...
Testing Rest with Spring  by Kostiantyn Baranov (Senior Software Engineer, Gl...Testing Rest with Spring  by Kostiantyn Baranov (Senior Software Engineer, Gl...
Testing Rest with Spring by Kostiantyn Baranov (Senior Software Engineer, Gl...
 
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonEclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
 
Web worker in your angular application
Web worker in your angular applicationWeb worker in your angular application
Web worker in your angular application
 
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
 

Plus de All Things Open

Building Reliability - The Realities of Observability
Building Reliability - The Realities of ObservabilityBuilding Reliability - The Realities of Observability
Building Reliability - The Realities of ObservabilityAll Things Open
 
Modern Database Best Practices
Modern Database Best PracticesModern Database Best Practices
Modern Database Best PracticesAll Things Open
 
Open Source and Public Policy
Open Source and Public PolicyOpen Source and Public Policy
Open Source and Public PolicyAll Things Open
 
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...All Things Open
 
The State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil NashThe State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil NashAll Things Open
 
Total ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScriptTotal ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScriptAll Things Open
 
What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?All Things Open
 
How to Write & Deploy a Smart Contract
How to Write & Deploy a Smart ContractHow to Write & Deploy a Smart Contract
How to Write & Deploy a Smart ContractAll Things Open
 
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
 Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlowAll Things Open
 
DEI Challenges and Success
DEI Challenges and SuccessDEI Challenges and Success
DEI Challenges and SuccessAll Things Open
 
Scaling Web Applications with Background
Scaling Web Applications with BackgroundScaling Web Applications with Background
Scaling Web Applications with BackgroundAll Things Open
 
Supercharging tutorials with WebAssembly
Supercharging tutorials with WebAssemblySupercharging tutorials with WebAssembly
Supercharging tutorials with WebAssemblyAll Things Open
 
Using SQL to Find Needles in Haystacks
Using SQL to Find Needles in HaystacksUsing SQL to Find Needles in Haystacks
Using SQL to Find Needles in HaystacksAll Things Open
 
Configuration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit InterceptConfiguration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit InterceptAll Things Open
 
Scaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship ProgramScaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship ProgramAll Things Open
 
Build Developer Experience Teams for Open Source
Build Developer Experience Teams for Open SourceBuild Developer Experience Teams for Open Source
Build Developer Experience Teams for Open SourceAll Things Open
 
Deploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamDeploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamAll Things Open
 
Sudo – Giving access while staying in control
Sudo – Giving access while staying in controlSudo – Giving access while staying in control
Sudo – Giving access while staying in controlAll Things Open
 
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML ApplicationsFortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML ApplicationsAll Things Open
 
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...All Things Open
 

Plus de All Things Open (20)

Building Reliability - The Realities of Observability
Building Reliability - The Realities of ObservabilityBuilding Reliability - The Realities of Observability
Building Reliability - The Realities of Observability
 
Modern Database Best Practices
Modern Database Best PracticesModern Database Best Practices
Modern Database Best Practices
 
Open Source and Public Policy
Open Source and Public PolicyOpen Source and Public Policy
Open Source and Public Policy
 
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
 
The State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil NashThe State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil Nash
 
Total ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScriptTotal ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScript
 
What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?
 
How to Write & Deploy a Smart Contract
How to Write & Deploy a Smart ContractHow to Write & Deploy a Smart Contract
How to Write & Deploy a Smart Contract
 
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
 Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
 
DEI Challenges and Success
DEI Challenges and SuccessDEI Challenges and Success
DEI Challenges and Success
 
Scaling Web Applications with Background
Scaling Web Applications with BackgroundScaling Web Applications with Background
Scaling Web Applications with Background
 
Supercharging tutorials with WebAssembly
Supercharging tutorials with WebAssemblySupercharging tutorials with WebAssembly
Supercharging tutorials with WebAssembly
 
Using SQL to Find Needles in Haystacks
Using SQL to Find Needles in HaystacksUsing SQL to Find Needles in Haystacks
Using SQL to Find Needles in Haystacks
 
Configuration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit InterceptConfiguration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit Intercept
 
Scaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship ProgramScaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship Program
 
Build Developer Experience Teams for Open Source
Build Developer Experience Teams for Open SourceBuild Developer Experience Teams for Open Source
Build Developer Experience Teams for Open Source
 
Deploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamDeploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache Beam
 
Sudo – Giving access while staying in control
Sudo – Giving access while staying in controlSudo – Giving access while staying in control
Sudo – Giving access while staying in control
 
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML ApplicationsFortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
 
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
 

Dernier

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Dernier (20)

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

Jenkins 101: Continuos Integration with Jenkins

  • 1. © 2015 IBM Corporation Jenkins 101 Getting Started With Jenkins! Lorelei McCollum IBM Verse Test Architect lmccollu@us.ibm.com
  • 2. © 2015 IBM Corporation 2 November 20, 2015 ● ● Install ● Build ● Design First ● Configuring Jenkins jobs ● Parameterize ● Workspace ● Jenkins Nodes ● Security ● Source Control for jobs ● Groovy ● Plugins ● Getting started with Jenkins
  • 3. © 2015 IBM Corporation 3 November 20, 2015 Installing Jenkins  Easy instructions to follow for whatever operatin system you choose on Jenkins-CI.org – Supports Various Linux/Unix installations as well as Windows   https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins  
  • 4. © 2015 IBM Corporation 4 November 20, 2015 ● What is a Jenkins “Build”? ● ● Not necessarily a product build ● ● Build is to a Jenkins job as a main method is to java class ● ● Jenkins “Build”
  • 5. © 2015 IBM Corporation 5 November 20, 2015 3 Main Parts to a Jenkins Job Pre Build Build Post Build ● Job allows for custom configuration of all these steps via various plugins ● ● Need to understand the “Config” of a job before you create one ● ● Understand what the job can do for you! ● ● Plugins can contribute anywhere! They determine what actions you have
  • 6. © 2015 IBM Corporation 6 November 20, 2015 Examples of Build Actions
  • 7. © 2015 IBM Corporation 7 November 20, 2015 Examples of Post Build actions
  • 8. © 2015 IBM Corporation 8 November 20, 2015 Design First ● Re-Configuring jobs can be painful and tedious ● ● Design jobs so they are easy to update/modify ● ● What could change in your pipeline over time, think ahead! ● ● Understand the Jenkins job and all the pre/post build options ● ● Start/Stop/Restart pipelines from any step ● ● Debugging your pipeline ● ● Use source control for storing all aspects of your pipeline (Extended Choice Parameter) ● ● Start small, then expand, use naming conventions (Nested View Plugin) ● ● Design out your pipeline ahead of time, then implement in Jenkins
  • 9. © 2015 IBM Corporation 9 November 20, 2015 Configuring Jenkins Jobs ● Anything command line - Jenkins can execute ● ● Don't hard-code things that could change (Extended Choice Parameter Plugin) ● ● Security – who can build and configure (Matrix Authorization Strategy Plugin) ● ● Jenkins job results (xUnit Plugin) ● ● Post processing of results (Publish jUnit/xUnit results, Email-ext plugin) ● ● Use the workspace to your benefit ● ● Create and pass environment variables (Environment Injector Plugin) ● ● There may be a better solution than using “blocking jobs” ● ● How to maintain your jobs/slave nodes/pipeline? ●
  • 10. © 2015 IBM Corporation 10 November 20, 2015 Parameterize ● Allows Job re-use ● ● Easy to maintain and update ● ● Think about how often jobs could change ● ● Think about your entire pipeline ● ● What happens when you have a new release/version of your product? ● ● Params change, use source control for them (Extended Choice Parameter Plugin) ● ● Can help you to scale and run more in parallel without the added maintenance of duplicate jobs (Multi-job Plugin)
  • 11. © 2015 IBM Corporation 11 November 20, 2015 How do you get a “build” with parameters
  • 12. © 2015 IBM Corporation 12 November 20, 2015 ● Job Names – ● Think about what different types of jobs you will have an see if you can adopt a naming convention. Spaces in job names may make remote calling of this job hard ● ● Parameter Names – ● Think about how the job will be called. Spaces in your parameter names can make remote calling of this job hard ● ● Build Name – ● Can set this to use environment variables to be easily readable by user ● ● Spaces can make your life harder, if you don't need them, don't use them ● You_can_use_this_style_instead and will make remote API's easier to use Naming Conventions
  • 13. © 2015 IBM Corporation 13 November 20, 2015 Jenkins Workspace ● All Jenkins jobs have their “own” workspace on the node they run on ● ● Artifacts get stored for a given build and copied into the workspace ● ● Use the workspace to your benefit ● ● Save job state ● ● If Jenkins is restarted, jobs currently executing are lost ● ● Can force jobs to use a custom workspace ● ● Concurrent jobs get a “@<int> type workspace name if more than one are going at the same time
  • 14. © 2015 IBM Corporation 14 November 20, 2015 Jenkins Nodes ● Easy to create in Manage Jenkins ● ● Term Executors refers to how many jobs can be running concurently on that node ● ● Can choose how you want them connected to Jenkins ● ● JNLP for windows works well ● Can set up as service or use a batch file that gets called on startup ● ● SSH works well for unix/linux ● ● Can use Jenkins API or groovy to create nodes dynamically ● ● Best Practice: Limit how many executors you give your master
  • 15. © 2015 IBM Corporation 15 November 20, 2015 Creating a new “Dumb Node”
  • 16. © 2015 IBM Corporation 16 November 20, 2015 Connecting & Usage of your new node  Choose your connect method      Choose how the slave is used by the jobs     If you don't specify it will default to “utilizing this node as much as possible”
  • 17. © 2015 IBM Corporation 17 November 20, 2015 How do you decide which jobs go to which nodes? ● If don't have to specify, Jenkins will choose a node with executors available ● ● Can specify in the job itself Choose label or node name ● ● ● Best to use naming standards and assign “labels” to your nodes to group or categorize them ● ● When you create nodes you can determine what can run on them as well ● ● ●
  • 18. © 2015 IBM Corporation 18 November 20, 2015 Plugins for Job Node Assignment ● Various plugins allow for UI options to choose the “label” or “Node” to run the job against (NodeLabel Parameter Plugin) ● ● Groovy script can decide as well based on user parameters (Groovy Label Assignment Plugin )
  • 19. © 2015 IBM Corporation 19 November 20, 2015 Groovy Label Assignment Plugin
  • 20. © 2015 IBM Corporation 20 November 20, 2015 NodeLabel Parameter Plugin - Node
  • 21. © 2015 IBM Corporation 21 November 20, 2015 NodeLabel Parameter Plugin - Label
  • 22. © 2015 IBM Corporation 22 November 20, 2015 Security Of Jenkins ● Different ways you can lock down your Jenkins server ● ● Think about who you want to have access ● ● How you control your access and ensure the right people have access ● ● Look at using groups to control access ● ● JenkinsRead – can only read and see and search and login ● JenkinsDevelopment – can create new jobs, configure jobs, create nodes ● JenkinsAdmin – Administer the Jenkins server ● ● Global Security trumps job based security
  • 23. © 2015 IBM Corporation 23 November 20, 2015 Matrix Authorization Strategy Plugin – global level ● Global trumps project based ● ● Groups allow for adding/removing people easily ● ● There are a lot of options, having Admins manually adding people can get tedious ● ● Lock down Anonymous! JenkinsAdmin JenkinsDev JenkinsRead
  • 24. © 2015 IBM Corporation 24 November 20, 2015 Matrix Authorization Strategy Plugin – job level ● Teams can set up their own groups to control access to their jobs ● ● Makes it easy to add/remove people without updating the job itself ● ● Teams own their jobs, don't need Admin to update access
  • 25. © 2015 IBM Corporation 25 November 20, 2015 Source Control for Jobs ● Can store your job config, scripts, shell scripts,batch files and artifacts your job needs in source and pull from source at job runtime ● ● Should try not to put script code directly into the jenkins job and instead reference a file in the workspace ● There are exceptions to this, when you don't need to put a script in source ● ● Can use the source control integration to deploy these artifacts at build time to the workspace and then use them to execute your build ● ● Having a “jenkins-config” allows you to track and make changes to your jenkins jobs! ● ● Set up your jobs source code management section to pull code from this repository ● ●
  • 26. © 2015 IBM Corporation 26 November 20, 2015 Implementing source control for jenkins job scripts Create a jenkins job to build this source project: Name: Admin Update Pipeline Config
  • 27. © 2015 IBM Corporation 27 November 20, 2015 Pull the scripts from source in your other jenkins jobs Now to use these scripts directly from source
  • 28. © 2015 IBM Corporation 28 November 20, 2015 Pulling job parameter options from source!
  • 29. © 2015 IBM Corporation 29 November 20, 2015 Pull groovy scripts directly from source! Call the scripts directly from Admin Update Pipeline Config Groovy Postbuild runs on the master and same with the Email-ext pre-send script
  • 30. © 2015 IBM Corporation 30 November 20, 2015 Groovy ● Is an agile and dynamic language for the Java Virtual Machine ● ● Is a shortened syntax, looks a lot like java, and understands java syntax ● ● Jenkins jobs can execute groovy scripts (Groovy plugin) ● ● You can do a lot with your pipeline dynamically with groovy scripts ● ● ● Groovy Script vs System Groovy Script ● ● The plain "Groovy Script" is run in a forked JVM, on the slave where the build is run. It's the basically the same as running the "groovy" command and pass in the script. ● ● The system groovy script, OTOH, runs inside the Jenkins master's JVM. Thus it will have access to all the internal objects of Jenkins, so you can use this to alter the state of Jenkins ● ● ● ● ●
  • 31. © 2015 IBM Corporation 31 November 20, 2015 Some useful groovy snippets! Most of these scripts will require some imports such as: import jenkins.model.* import hudson.model.* import hudson.slaves.* //function to poll how many jobs running on a given slave def polljobs(node){ for (slave in jenkins.model.Jenkins.instance.slaves) { if (slave.name.equals(node)){ return slave.getComputer().countBusy() } } return -1 } slave & slave.getComputer() has all sorts of methods you can access off it – google the javadoc! ///function for determing if a node is online def isonline(node){ for (slave in jenkins.model.Jenkins.instance.slaves) { if (slave.name.equals(node)){ return slave.getComputer().isOnline() } } return false }
  • 32. © 2015 IBM Corporation 32 November 20, 2015 Groovy Snippet to restart a node ///function to restart a node def restart(node){ for (slave in jenkins.model.Jenkins.instance.slaves) { if (slave.name.equals(node)){ def channel = slave.getComputer().getChannel() RemotingDiagnostics.executeGroovy( """ if (Functions.isWindows()) { 'shutdown /r /t 10 /c "Restarting after Jenkins test completed"'.execute() } else { "sudo reboot".execute() } """, channel) } } }
  • 33. © 2015 IBM Corporation 33 November 20, 2015 Create Reports and links for your jobs  Can create quick links and email reports for the job that ran  Use Groovy to loop through subbuilds and their artifacts and results and expose the data you want   Use Groovy Postbuild plugin or Groovy system scripts
  • 34. © 2015 IBM Corporation 34 November 20, 2015 Groovy Quick Links with Groovy Postbuild Plugin def testResult = manager.build.testResultAction if(testResult != null){ testResult = manager.build.testResultAction.result def total = testResult.totalCount def fail = testResult.failCount manager.build.setDescription("${total} VPs <br> ${fail} Failures") } //logs the quick link on the jenkins build page def logQuickLink(result,link,text) { if(link != null){ if(!result.equals("SUCCESS")){ manager.createSummary("folder.gif").appendText("<h1>FAILED ${text} <a href="${link}">Result Viewer</a></h1>", false, false, false, "red") } }else{ manager.createSummary("error.gif").appendText("<h1>${text} No Results </h1>", false, false, false, "red") } }
  • 35. © 2015 IBM Corporation 35 November 20, 2015 Groovy Quick Links with Groovy System Script import org.jvnet.hudson.plugins.groovypostbuild.GroovyPostbuildSummaryAction GroovyPostbuildSummaryAction action= logQuickLink(buildResult,logViewerURL,shortName,listener); if(action != null){ build.getActions().add(action); } Assumes you already created a build variable and that you have a function similar to previous page that creates this GroovyPosbuildSummaryAction object
  • 36. © 2015 IBM Corporation 36 November 20, 2015 PLUGINS!
  • 37. © 2015 IBM Corporation 37 November 20, 2015 Build Time-out Plugin
  • 38. © 2015 IBM Corporation 38 November 20, 2015 Environment Injector Plugin ● What happens in a build step is scoped to that step ● ● Not obvious how to pass environment params across build steps ● ● This plugin lets you do this ● ● In one build step, write out parameters or things you want to save to a properties file in the WORKSPACE ● ● Then in the next build step use the Inject environment variables option ●
  • 39. © 2015 IBM Corporation 39 November 20, 2015 Build-Name Setter Plugin ● Operating System & Stream are build parameters to this job ● ● Changes what you see in the build history! ● ● Supports environment variables and parameters ● ● Especially helpful for builds with parameters
  • 40. © 2015 IBM Corporation 40 November 20, 2015 Multi Job Plugin Phases are sequential whilst jobs inside each Phase are parallel When creating new Jenkins job you have an option to create MultiJob project. ● ● This job can define in the Build section phases that contains one job or more. ● ● All jobs belong to one phase will be executed in parallel (if there are enough executors on the node) ● ● All jobs in phase 2 will be executed only after jobs in phase 1 are completed etc.
  • 41. © 2015 IBM Corporation 41 November 20, 2015 Nested View Plugin ● Nested Folders within a view ● ● Hide views and jobs from other areas
  • 42. © 2015 IBM Corporation 42 November 20, 2015 Nested View Plugin – click into a “nested folder”
  • 43. © 2015 IBM Corporation 43 November 20, 2015 Email-ext plugin ● Advanced settings gives you the ability to execute some groovy code to modify the email based on the build that executed ● ● Can use environment variables in the subject and body of the email to be sent ● ● Set up triggers to determine when to send the email and to who
  • 44. © 2015 IBM Corporation 44 November 20, 2015 Email-ext plugin
  • 45. © 2015 IBM Corporation 45 November 20, 2015 Email-ext plugin advanced section (can use a script in source too!)
  • 46. © 2015 IBM Corporation 46 November 20, 2015 Useful Plugins Covered in Presentation ● Build-Name Setter Plugin ● Conditional Build Step Plugin ● Downstream Build View Plugin ● Environment Injector Plugin ● Extended Choice Parameter Plugin ● Multi Job Plugin ● Groovy Plugin ● Parameterized Trigger Plugin ● Groovy Label Assignment Plugin ● Nested View Plugin ● Run Condition Plugin ● Show Build parameters Plugin ● View Job Filters Plugin ● ● Groovy PostBuild Plugin ● Junit Plugin ● Xunit Plugin ● Claim Plugin ● EnvInject Plugin ● TeamConcert Plugin ● Build User Vars Plugin ● Log Parser Plugin ● Flexible Publish Plugin ● Build-time-out Plugin ● Copy Artifact Plugin ● NodeLabel Parameter Plugin ● Email-ext plugin
  • 47. © 2015 IBM Corporation 47 November 20, 2015 Stuck? Need Help? ● Google is your friend, especially stackoverflow ● ● Jenkins book by O'Reilly ● ● Forums, communities, use social platforms ● ● Chances are other people have had your question and may have a solution ● ● Tons of plugins out there ● ● Create your own plugin, or help contribute to enhance/fix existing plugins ● ● Report bugs/issues ● ● Helpful Links ● http://jenkins-ci.org/ ● http://www.cloudbees.com/jenkins ●
  • 48. © 2015 IBM Corporation 48 November 20, 2015 Questions?