Jenkins is, fundamentally, an automation engine which supports a number of
automation patterns. Pipeline adds a powerful set of automation tools onto
Jenkins, supporting use cases that span from simple continuous integration to
comprehensive continuous delivery pipelines. By modeling a series of related
tasks, users can take advantage of the many features of Pipeline:
-
Code: Pipelines are implemented in code and typically checked into
source control, giving teams the ability to edit, review, and iterate upon
their delivery pipeline.
-
Durable: Pipelines can survive both planned and unplanned restarts of the
Jenkins master.
-
Pausable: Pipelines can optionally stop and wait for human input or approval
before continuing the Pipeline run.
-
Versatile: Pipelines support complex real-world continuous delivery
requirements, including the ability to fork/join, loop, and perform work in
parallel.
-
Extensible: The Pipeline plugin supports custom extensions to its DSL
and multiple options for integration with other plugins.
While Jenkins has always allowed rudimentary forms of chaining Freestyle Jobs
together to perform sequential tasks,
Pipeline makes this concept a first-class citizen in Jenkins.
Building on the core Jenkins value of extensibility, Pipeline is also
extensible both by users with Pipeline Shared Libraries
and by plugin developers.
The flowchart below is an example of one continuous delivery scenario easily
modeled in Jenkins Pipeline: