CDAF providers 4 entry scripts for different purposes.
ci : Build and Package only, i.e. Continuous Integration, mandatory argument is BUILDNUMBER
cd : Release, i.e. Continuous Delivery or Deploy (depending on gating or not), mandatory argument is ENVIRONMENT
cdEmulate : Executes ci and then cd, generates BUILDNUMBER if not supplied and uses configurable ENVIRONMENT
entry : Executes ci and then cd, generates BUILDNUMBER if not supplied and uses configurable ENVIRONMENT(s)
The CI entry point (ci.bat/ci.sh) will perform the build and package process. Recommended configuration is to produce a self extracting deployable artefact (release.ps1/release.sh).
sequenceDiagram
ci ->>+ buildPackage: BUILDNUMBER
buildPackage ->>- ci: release
CD Emulation
The CD Emulation (cdEmulate.bat/cdEmulate.sh) is a simple wrapper which performs the CI process, and then executes the CD process, using the configured or default environment.
The entry wrapper (entry.bat/entry.sh), similar to cdEmulate, performs the CI process and CD process. The CD process however supports additional, optional, configuration for releases based on branch name (substrings).
sequenceDiagram
cdEmulate ->>+ buildPackage: BUILDNUMBER
buildPackage ->>- cdEmulate: release
loop for each matching branch name
cdEmulate ->>+ release: ENVIRONMENT
release ->>- cdEmulate: deployment results
end
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 Guide.
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 <br/> 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 <br/> 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 <br/> 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