Continuous Integration

Continuous Integration (CI) is a critical prerequisite of Continuous Delivery (CD).

Build and Package to Create a Release Package

To allow the execution of the build and package (CI) process on the DevOps Engineers machine, CDAF is used for both loose coupling and standardisation. CDAF provides a variety of features which provide consistency, especially important and the number of pipelines grow and the team members move between both squads and value streams.

Release Package Creation

With the focus being delivery, not development, the creation of a consistent, self contained release package is a core CDAF feature used for both component delivery and stand-up/tear-down capabilities. The output of the CDAF CI processs is a single release.ps1 file. See Self-extracting release article.

Property Translation

The transformation process converts the human readable .cm files into computer friendly properties file for use in the CD process, i.e. release.ps1. See Configuration Management, tokenisation and detokenisation documentation.

Execution Engine

The CDAF execution engine allows the DevOps Engineer to focus on the primary objective, and not have to cater for logging, exception and error handling. Within this engine are a set of operations for common problems, further allowing a focus on results and rewriting/copying scripts. See Execution Engine documentation.

Note: The following is details a subset of CDAF capabilities, describing a common usage, For a detailed breakdown of each component, see the CDAF Reference Documentation

sequenceDiagram autonumber participant entry point participant buildPackage participant buildProjects participant execute participant package entry point ->>+ buildPackage: BUILDNUMBER Note right of buildPackage: "Build" Process Begins buildPackage ->> buildPackage: Property Translation (properties.cm) loop for each Directory containering build.tsk Note right of buildPackage: "Project" is a historical name
from Eclipse & Visual Studio buildPackage ->>+ buildProjects: Project Name buildProjects ->>+ Transform: Load Properties Transform ->>- buildProjects: propertyList buildProjects ->>+ execute: build.tsk loop for each Line in build.tsk Note right of execute: Build commands, such as
MSBuild, NPM, etc. execute ->> execute: log, execute and manage errors end execute ->>- buildProjects: build artefacts buildProjects ->>- buildPackage: build complete end Note right of buildPackage: "Package" Process Begins buildPackage ->>+ package: proejctName package ->>+ Transform: Load Properties Transform ->>- package: propertyList package ->>- buildPackage: project complete buildPackage ->>+ packageLocal: prepare release packageLocal ->> packageLocal: Gather CDAF SCripts
and deploy properties packageLocal ->> packageLocal: Gather user defined artefacts packageLocal ->>- buildPackage: artefacts buildPackage ->> buildPackage: generate self-extract release buildPackage ->>- entry point: release.ps1 or release.sh