How do you “Setting up CI:CD Pipeline”? - Automation in Testing Curriculum

Hi all,

We’re continuing our work to create a curriculum focused on automation that is created with feedback from the testing community. We’ve already run a series of activities that have helped us identify a list of key tasks that helped us create this Job Profile .

We’re now in the process of going through each task and analysing them to identify the core steps we take to achieve them. For this post we’re considering the task:

Setting Up CI:CD Pipeline

We’ve run a series of community activities including social questions and our curriculum review sessions to identify the steps we need to take to successfully achieve this task and have listed them below:

  • Discussion with Stakeholders, Developers, Ops, about the scope and purpose
  • Confirm if our approach aligns with our automation strategy
  • Confirm if our approach aligns with our testing strategy
  • Confirm if our approach aligns with our development strategy
  • Create several proof of concepts with different tools
  • Make a team decision on tooling
  • Identify the artefacts that the build needs to compile
  • Identify the tests that the build has to execute
  • Ensure the naming convention for the tests allows their exact purpose to be easily identified so they can be removed when they are no longer rele
  • Decide what tests should be ran as part of the pipeline/builds
  • Decide on the order that the tests should be executed
  • Decide what happens when the build succeeds or fails
  • Deploy an instance of the tooling ready to configure
  • Decide what triggers the pipeline to execute
  • Configure the tooling to pull the latest version of the application and test code
  • Configure the tooling to build the application
  • Configure the tooling to deploy the application for testing
  • Configure the tooling to execute the tests
  • Configure the tooling to notify on success and failed builds

What we would like to know is what do you think of these steps?
Have we missed anything?
Is there anything in this list that doesn’t make sense?

How do you go about setting up a new /CI:CD pipeline?


That all makes sense and looks good. The things I suggest to add:

  • Check that the deployment target for the code exists, and the pipeline has the necessary permissions to connect to and make changes to the deployment target.
  • Confirm what configuration will be the same and what configuration will be different for the deployment target compared to any other environments the code’s hosted in. E.g. database connection strings, API keys etc. How will the configuration be handled by the pipeline?
  • What housekeeping type things have to happen at the beginning and/or end of the pipeline? Notification of success or failure is one thing already mentioned, but also do things need creating and/or deleting, starting? Do caches need warming? Is there blue/green deployment etc?

A good reference is Dave Farley’s Continuous Delivery Pipelines.
For Continuous Integration, we need to implement Trunk-Based Development.