Pipeline Functional Component

id EAID 3CE031DE FDF7 4911 A39A 3B75F0992758
Figure 1. Pipeline Functional Component Model

Purpose

The Pipeline functional component orchestrates the activities needed to deliver a tested, validated, and compliant Product Release. Its purpose is to orchestrate and coordinate the tasks associated with building, verifying, testing, and deploying software changes, and the Pipeline functional component can manage different types of Pipelines, such as:

  • Continuous Integration or build Pipelines

  • Release Pipelines orchestrating the release across the different environments (such as test, acceptance, and production)

A Pipeline defines an orchestration workflow consisting of several steps (jobs or tasks) and stages to be performed, including:

  • Execute build activities and create the Build Package (compiling and packaging) triggered by code changes

  • Initiate code quality checks (executed by the Test functional component)

  • Trigger the execution of Test Plans such as those related to unit testing, functional testing, and performance and security testing

  • Initiate deployments to different environments such as test, stage/acceptance, and production (via the Order functional component)

  • Validate the outcome of build, test, and deployment activities against agreed controls and policies

The Pipeline controls the movement of code from a commit in the Source Control functional component, through its development via the different environments such as test, acceptance, and production. The Pipeline functional component triggers the Fulfillment Orchestration functional component to perform the actual deployment. A Pipeline also embeds the required controls to ensure releases are processed through the Pipeline in a secure and compliant manner. The configuration of a Pipeline should be managed as code and placed under version control.

The Pipeline functional component supports the Integrate value stream.

Functional Criteria

The Pipeline functional component:

  • Shall ensure that the Pipeline is under version control and secured (for unauthorized changes)

  • May manage the Pipeline as code in the Source Control functional component

  • Shall associate the Pipeline to the source code repository (e.g., a merge request can initiate the Pipeline to execute build activities)

  • Shall manage the executions of the Pipelines (and keep track of all activities and outcomes)

  • Can associate the Pipeline to a Digital Product

  • Shall ensure that policies are embedded into the Pipeline so that security, risk, and compliance checks are executed as part of build and release activities

  • Shall track the progress and status of the Pipeline activities/tasks (a Pipeline consists of one or more tasks)

  • Shall associate a Pipeline to one or many Test Plans which are initiated as part of the Pipeline workflow

  • Shall register the Build Package in the Build Package functional component

  • Shall trigger the execution of one or more Test Plans

  • Shall update the status of the associated Build Package reflecting the outcome of the test activities

  • Shall associate the Product Release with the Pipeline (which orchestrated the creation of the release)

  • Shall update the status of the associated Product Release based upon the outcome of the deployment and activities across the different environments

  • Shall create a Change to log the planned and executed deployment of a Product Release

  • Shall create a Change to inform stakeholders about the (planned) Change

  • Shall use the Change functional component to perform a change impact assessment and determine potential conflicts (identifying potential conflicts of multiple changes)

  • Can use the Change functional component to schedule the actual deployment in the appropriate change window (e.g., in case a deployment results into downtime)

  • Shall wait for the approval of the Change functional component to continue with the workflow of the Pipeline

  • Shall initiate the deployment of the Product Release through the Fulfillment Orchestration functional component (e.g., to a test, acceptance, or production environment)