40 great Jenkins plugins in 40 minutes

Miro Cupak (DNAstack)

Twitter @mirocupak

2015-02-07

Who am I?

  • currently software engineer at DNAstack
  • contributor/administrator (~1 year) at Red Hat
  • Jenkins user (~5 years)
  • previously quality engineer at Red Hat

Jenkins

  • 638 organization members on GitHub
  • 100K active installations with 300K nodes
  • 3.2M installations of 1050 unique plugins


Which plugins should you use?

#1

Dashboard View

  • view implementation containing portlets (well, sort of...)
  • easy to extend
#2

CloudBees Folders

  • organizes jobs into hierarchical folders (think file system)
  • better grouping capabilities than Nested View and others
#3

Build Timeout

  • automatically aborts a build if it's taking too long
  • usually works
#4

Workspace Cleanup

  • removes data from the workspace before/after a build
#5

Multiple SCMs

  • allows jobs to check out sources from multiple SCM providers
#6

Node Label Parameter

  • allows you to dynamically select the node where a job should run
#7

URL Trigger

  • polls given URLs for changes and triggers a build after a change is detected
  • only HTTP(S), other protocols included in XTrigger
#8

HTML Publisher

  • publishes HTML reports to job/build pages
#9

Embeddable Build Status

  • exposes current build status as an image
#10

Matrix Project

  • supports multi-configuration (matrix) project type
  • used to be a part of Jenkins core, now a bundled plugin
  • essentially a parametrized job running all combinations of parameters
#11

Matrix Reloaded

  • rebuilds parts of matrix builds
#12

Matrix Combinations

  • allows the user to dynamically choose combinations to run in a matrix job
  • introduces a Matrix Combinations parameter type
#13

Groovy

  • allows for execution of groovy code
  • 2 types of build steps:
    • groovy scripts
      • run in the slave's JVM
    • system groovy scripts
      • run inside master's JVM
#14

Plot

  • outputs simple charts (plots) from builds
#15

Job Restrictions

  • restricts how builds can be triggered and where they can run
#16

Ownership

  • introduces concept of owners of jobs and slaves
  • includes:
#17

Rebuild

  • rebuilds a parameterized build with the same parameters
#18

Parameterized Trigger

  • extension of out-of-the-box upstream-downstream job relationship
  • provides job chaining with parameter passing
#19

Workflow

  • allows you to write complex workflows in Groovy with an embedded DSL
  • forget Build Flow and Join plugins
  • introduces a new workflow job type
  • collection of plugins
  • supports:
    • core job-related stuff (triggers, parameters, SCM...)
    • durable pipelines
    • allocation of slaves and workspaces
    • human input integrated into flows
    • sandboxing via Script Security plugin
#20

Description Setter

  • sets the description for a build
  • uses a regular expression to find a line in the console log
#21

Implied Labels

  • recognizes implication rules to infer node labels
#22

Environment Injector

  • manages environment variables for jobs and nodes
  • use cases:
    • set up clean environment for nodes
    • inject variables based on user parameter values
    • inject environment variables from the evaluation of a Groovy script
#23

Naginator

  • automatically reschedules a build after a build failure
#24

Email Extension

  • controls all aspects of email notifications

Mailer

#25

Timestamper

  • adds timestamps to console output
#26

Copy To Slave

  • transfers data between the master's file system and jobs' workspaces
#27

Copy Artifact

  • copies an artifact from another build/job into the current build's workspace
#28

Priority Sorter

  • queues jobs according to their priorities
  • the lower the priority, the sooner the job runs
#29

Throttle Concurrent Builds

  • limits the number of concurrent builds of a project running per node or globally
  • replaces Locks and Latches plugin
#30

Build Publisher

  • sends builds to another Jenkins master over HTTP
#31

Job Configuration History

  • versioning of job and system configuration
#32

Audit trail

  • records who performed a particular operation and when
#33

Tmp Cleaner

  • periodically cleans up JVM temporary files
  • no UI
    
    -Dhudson.plugins.tmpcleaner.TmpCleanWork.minutes=360
    -Dhudson.plugins.tmpcleaner.TmpCleanWork.days=1
    
#34

Credentials

  • allows you to store and manage credentials in Jenkins
  • exposes API to other plugins
  • organizes credentials into domains
#35

Disk Usage

  • periodically calculates disk space occupied by jobs
  • beware of performance impact!
#36

Docker

  • dynamically provisions Docker slaves
  • needs images with JDK and SSH server
  • allows to commit a container
#37

Xvnc

  • runs Xvnc session during a build
  • each build gets its own display allocated from a free list
#38

Read-only Configurations

  • shows global and job configurations in read-only mode
#39

Custom Tools

  • installs tools on slaves as needed
#40

Favorite

  • allows the users to mark jobs as favorite

Thank you.

Twitter @mirocupak #devconfcz          DevConf.cz http://devconf.cz/f/81
Github http://mcupak.github.io/jenkins-plugins-talk