Constructing pipelines

Pipelines enable the "continuous" in Continuous Delivery for Puppet Enterprise (PE). Constructing a pipeline means defining the work that needs to happen to make sure every new line of Puppet code is ready for deployment. Once your pipeline is set up, this work happens automatically each time the pipeline is triggered.

Stages and tasks

Pipelines in Continuous Delivery for PE are made up of stages and tasks. Tasks include deployments, impact analyses, and jobs to test code; stages group tasks into a series of sequential phases.

If you want to set up some logic of the "if this job succeeds, then run the next one, otherwise stop and tell me what happened," variety, use stages to break up the pipeline into a series of incremental steps. You can set your pipeline to require manual promotion before moving on to the next stage, or to promote automatically when certain conditions are met.

Building and managing pipelines: web UI or code?

You have two options when deciding how to build and manage your pipelines: using the controls in the web UI, or defining pipelines in a YAML file.
  • Building a pipeline with the web UI is the simplest method for building and managing pipelines. The web UI controls allow you to more easily make iterative changes.
  • Building a pipeline as code is more complex, but ideal if you need a record of changes to your pipeline over time, or if you want to avoid hand-creating similar pipelines for many control repos or modules. Using the pipelines-as-code method also lets you commit changes to your pipeline alongside changes to your Puppet code that will necessitate a new pipeline definition.
Important: You can't use a mixture of the two methods within a single control repo or module. User controls are disabled for pipelines that are managed as code.

Two sample pipelines, showing the presence of user controls when a pipeline is managed in the web UI, and the absence of these controls when a pipeline is managed with code.