> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flexagon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Pipeline

> A pipeline orchestrates the delivery of snapshots across the stages/environments. While a deploy workflow defines the implementation for the delivery

A **pipeline** orchestrates the delivery of snapshots across the stages/environments.  While a deploy workflow defines the implementation for the delivery of a single build artifact into an environment, the pipeline operates at a higher level and orchestrates the propagation of many deployments across many stages/environments. The pipeline includes facilities for approvals, manual tasks, scheduling, deployments, and much more.

See [Creating/Editing a Pipeline Version](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-version.md) to manage pipeline details.

> [!TIP]
>
> A sample pipeline definition with three stages, see [Example Pipeline](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/example-pipeline.md) for additional example.

![Image](https://mintcdn.com/flexagon-llc-ce77a95c/s5KJA2KdwTZ5hdNK/images/fd111/12590912128.png?fit=max\&auto=format\&n=s5KJA2KdwTZ5hdNK\&q=85\&s=98d87a9efebb94421821edbd61193fae)

The pipeline above has three stages, Development, QA, and Production.  The ***Development*** stage does not have any gates, which means the steps begin execution immediately.  The "Deploy All" step deploys all of the project versions in a snapshot into the Development environment, which utilizes the deploy workflows of the underlying projects to facilitate this work. The ***QA*** stage has three gates.  The "Verify Functional Tests" gate verifies that tests for the projects in the snapshot in Development meet the configured qualifier metrics.  If the qualifier metrics did not pass then the gate fails, otherwise, the gate completes and it transitions to the next gate.  The "QA Approval" gate creates an approval task for the QA Manager group and blocks execution until approved. When the approval is given, the "Deploy All" step for QA is executed. Another test is also run and an email notification to sent to a QA group. When the notification is complete, the pipeline execution transitions to the ***Production*** stage and executes its gates and steps (similar to QA). However, in the production stage, the approval is outsourced from an external Change Management System (i.e. ServiceNow CAB) instead of internally in the FlexDeploy application.

In a typical release, most of the snapshots will not make it very far through the pipeline.  The approval gates are either rejected, or the snapshot is simply made "Out of Date" by a newer one.  Depending on the size and complexity of a release, there may be dozens or even hundreds of iterations in the lower stages before the first snapshot is promoted to the later stages.  In fact, it is possible that only one snapshot for the release ultimately makes its way all the way to production.  At such time, the release may be ended, and a new one is created.  However, if desired, the same release can be used to deliver additional fixes or updates.

## Pipeline Gates

<table><colgroup><col /><col /></colgroup><tbody><tr><th>**Gate Type**</th><th>**Description**</th></tr><tr><td>[Approval](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-gates/approval-gate.md)</td><td>Creates an approval task for the defined group, and blocks transition until the task is approved.  If the task is rejected, the stage execution is marked as failed, and execution is terminated.</td></tr><tr><td>[External Approval](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-gates/external-approval-gate.md)</td><td>Creates an approval task tied to an external system (e.g. ServiceNow), and blocks transition until the task is approved.  If the task is rejected, the stage execution is marked as failed, and execution is terminated.</td></tr><tr><td>[Schedule](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-gates/schedule-gate.md)</td><td>Blocks transition until the defined schedule is reached, or overridden by a user with appropriate privileges.</td></tr><tr><td>[Test](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-gates/test-gate.md)</td><td>Evaluates the test qualifiers for any tests which were executed for the same snapshot in the configured environment. The gate is successful if the qualifiers determine success, or fails otherwise.</td></tr><tr><td>[Scan Gate](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-gates/scan-gate.md)</td><td>Evaluates any scans that were executed within the current pipeline execution on build or in a previous environment in the pipeline. The gate is successful if the qualifiers determine success, or fails otherwise.</td></tr><tr><td>[Custom Gate](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-gates/custom-gate.md)</td><td>Executes custom groovy based implementation of gate.</td></tr><tr><td>[Work Item Gate](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-gates/work-item-gate.md)</td><td>Ensures that Work Items associated to the Release have met certain criteria before the Pipeline Execution can continue.</td></tr></tbody></table>

## Pipeline Steps

<table><colgroup><col /><col /></colgroup><tbody><tr><th>**Step Type**</th><th>**Description**</th></tr><tr><td>[Deploy](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/deploy-step.md)</td><td>Deploys a single project version from the snapshot to the current stage.</td></tr><tr><td>[Deploy All](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/deploy-all-step.md)</td><td>Deploys all project versions from the snapshot to the current stage, using the deploy priorities configured on the release.</td></tr><tr><td>[Pre-Deploy](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/pre-deploy-step.md)</td><td>Executes the configured pre-deploy workflow for a single project version from the snapshot to the current stage.</td></tr><tr><td>[Pre-Deploy All](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/pre-deploy-all-step.md)</td><td>Executes all the configured pre-deploy workflows for project versions from the snapshot to the current stage, using the deploy priorities configured on the release.</td></tr><tr><td>[Test](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/test-step.md)</td><td>Executes tests in the current stage for a single project, according to the defined strategy (on the project). </td></tr><tr><td>[Test All](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/test-all-step.md)</td><td>Executes tests in the current stage for all projects in the snapshot, according to the defined strategy (on the projects).</td></tr><tr><td>[Custom Step](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/custom-step.md)</td><td>Executes custom groovy based implementation of step.</td></tr><tr><td>[Execute Utility](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/execute-utility-step.md)</td><td>Executes a single utility workflow in the current stage.</td></tr><tr><td>[Execute All Utility](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/execute-all-utility-step.md)</td><td>Executes all utility projects in the release for the current stage according to the deploy priorities.</td></tr><tr><td>[Promote To Release](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/promote-to-release.md)</td><td>Promotes current snapshot project versions to a specific release.</td></tr><tr><td>[Notification](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/notification-step.md)</td><td>Sends an email to provided email address, FlexDeploy User, or FlexDeploy Group.</td></tr><tr><td>[Group](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/group-step.md)</td><td>A container for other steps to be executed serially.  Useful to execute the entire group in parallel to another step or group.</td></tr><tr><td>[Wait](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/wait-step.md)</td><td>Halts execution for a configured number of seconds, or until a particular date and time.</td></tr><tr><td>[Manual](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/manual-step.md)</td><td>Halts execution waiting for the task to be marked complete by a user in the defined group.</td></tr><tr><td>[Schedule](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/schedule-step.md)</td><td>Halts execution until the date/time evaluated by the given cron expression is reached.</td></tr><tr><td>[Execute All](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/execute-all-step.md)</td><td>Deploys all projects versions in the snapshot and executes all utility workflows defined in the release, using the configured deploy priorities.</td></tr><tr><td>[Update Work Items](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/update-work-items-step.md)</td><td>Applies a number of optional updates to Work Items in the Release, such as updating the status or adding attachments.</td></tr><tr><td>[Update Change Tickets](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage/pipeline-steps/update-change-tickets.md)</td><td>Applies updates to Change Tickets associated to the Stage Execution Info, such as adding comments and attachments.</td></tr></tbody></table>

## [Viewing Existing Pipelines](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/viewing-existing-pipelines.md)

## [Creating and Editing a Pipeline Version](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-version.md)

## [Creating and Editing a Pipeline Stage](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/creating-and-editing-a-pipeline-stage.md)

## [Modifying a Pipeline Version during Execution](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/modifying-a-pipeline-version-during-execution.md)

## [Example Pipeline](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/example-pipeline.md)

## [Pipeline Security](https://docs.flexagon.com/flexdeploy-11-1-documentation/flexdeploy-users-guide/pipeline-release-management/pipeline/pipeline-security.md)
