Example Pipeline

Here is the example pipeline we will talk at high level. It is entirely up to process that you want to implement in your organization, this is just one example.

In this pipeline, we will have 4 roles which makes up our Team.

High Level Approach

Here is high level approach, in next section we will show screen shot for each Gate and Step.

  • There are 4 stages - Development, Test, QA and Production.
  • Development stage does not have any Gates, so all projects will deploy right away when new Release Snapshot is created.
  • Run various types of tests in each Stage and check for results on next stage.
  • Test environment is based on Schedule, but QA is based on approval by QA team to make sure they are ready to accept new code.
  • All steps in pipeline are automated except there is a step in QA to perform some Manual tests.
  • Production environment has Approval as well as Schedule. Weekend schedule allows for automated deployments at appropriate time.
  • Deploy All step will notify appropriate team on Failure in each Stage.

Stages

Development

We are not using any Gates in development environment to allow for continuous deployment in to that environment. Developers can setup Poll or Schedule based Build trigger on Projects to allow for build and deploys in continuous manner.

Steps used are for Deploying All Projects and Test All to execute Unit Tests. Deploy All Step will deploy all projects in Release as per Deploy Priority setup on Release, which will allow for Sequenced deployments.

Test

First thing we want to do is to check for Tests executed in Development environment and move on only if Tests were successful. Then we will use Schedule Gate to automatically deploy at Noon everyday. This option allows us to deploy to Test environment at predefined time and it will take latest Snapshot successfully deployed in Development environment.

Steps used are for Deploying All Projects and Test All to execute Integration Tests. Deploy All Step will deploy all projects in Release as per Deploy Priority setup on Release, which will allow for Sequenced deployments.

QA

First thing we want to do is to check for Tests executed in Test environment and move on only if Tests were successful. Then we will use Approval Gate by QA role, so that allows QA team to control promotion of code in QA environment as per their testing schedule.

Steps used are for Deploying All Projects and Test All to execute Functional Tests. Deploy All Step will deploy all projects in Release as per Deploy Priority setup on Release, which will allow for Sequenced deployments. Additionally we will use Manual Step to allow for some manual verification in QA environment.

Production

First thing we want to do is to check for Tests executed in QA environment and move on only if Tests were successful. Then we will use Approval Gate by Operator role, so that allows Operators to control promotion of code in Production environment. Next we will have Schedule Gate to run steps only Saturday at 9 PM which would allow for code promotion at predefined downtime.

Steps used are for Deploying All Projects and Test All to execute Smoke Tests. Deploy All Step will deploy all projects in Release as per Deploy Priority setup on Release, which will allow for Sequenced deployments. We will only run simple verification tests (aka Smoke Tests). Additionally we will use Notification Step to allow for send completion email to Operators.