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
- view implementation containing portlets (well, sort of...)
- easy to extend
#2
- organizes jobs into hierarchical folders (think file system)
- better grouping capabilities than Nested View and others
#3
- automatically aborts a build if it's taking too long
- usually works
#4
- removes data from the workspace before/after a build
#5
- allows jobs to check out sources from multiple SCM providers
#6
- allows you to dynamically select the node where a job should run
#7
- polls given URLs for changes and triggers a build after a change is detected
- only HTTP(S), other protocols included in XTrigger
#8
- publishes HTML reports to job/build pages
#9
- exposes current build status as an image
#10
- 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
- rebuilds parts of matrix builds
#12
- allows the user to dynamically choose combinations to run in a matrix job
- introduces a Matrix Combinations parameter type
#13
- allows for execution of groovy code
-
2 types of build steps:
-
groovy scripts
-
system groovy scripts
#14
- outputs simple charts (plots) from builds
#15
- restricts how builds can be triggered and where they can run
#16
- introduces concept of owners of jobs and slaves
- includes:
#17
- rebuilds a parameterized build with the same parameters
#18
- extension of out-of-the-box upstream-downstream job relationship
- provides job chaining with parameter passing
#19
- 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
- sets the description for a build
- uses a regular expression to find a line in the console log
#21
- recognizes implication rules to infer node labels
#22
- 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
- automatically reschedules a build after a build failure
#24
- controls all aspects of email notifications
Mailer
#25
- adds timestamps to console output
#26
- transfers data between the master's file system and jobs' workspaces
#27
- copies an artifact from another build/job into the current build's workspace
#28
- queues jobs according to their priorities
- the lower the priority, the sooner the job runs
#29
- limits the number of concurrent builds of a project running per node or globally
- replaces Locks and Latches plugin
#30
- sends builds to another Jenkins master over HTTP
#31
- versioning of job and system configuration
#32
- records who performed a particular operation and when
#34
- allows you to store and manage credentials in Jenkins
- exposes API to other plugins
- organizes credentials into domains
#35
- periodically calculates disk space occupied by jobs
- beware of performance impact!
#36
- dynamically provisions Docker slaves
- needs images with JDK and SSH server
- allows to commit a container
#37
- runs Xvnc session during a build
- each build gets its own display allocated from a free list
#38
- shows global and job configurations in read-only mode
#39
- installs tools on slaves as needed
#40
- allows the users to mark jobs as favorite