content_image/720921.jpg
## Why Pipeline? 

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 [1: Domain-Specific Language] and multiple options for integration with other plugins. 

While Jenkins has always allowed rudimentary forms of chaining Freestyle Jobs together to perform sequential tasks, [4: Additional plugins have been used to implement complex behaviors utilizing Freestyle Jobs such as the Copy Artifact, Parameterized Trigger, and Promoted Builds plugins] 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. [5: plugin:github-organization-folder[GitHub Organization Folder plugin]] 

The flowchart below is an example of one continuous delivery scenario easily modeled in Jenkins Pipeline: 

<img src='content_image/720921.jpg'>

