Pipeline

CDAF provides a loose coupling for core CI & CD objectives. The intention is that the CI & CD processing is performed on the developers desktop, and then executed in the same way in the pipeline tool. By establishing a healthy pipeline as soon as possible, any pipeline failures can be quickly and incrementally identified. See Entering Sprint-0 for elaboration.

Pipeline Orchestration and Capabilities

The CI process gathers files from source control, then uses the CDAF CI entry point to produce the release package. The pipeline tool then stores the release package for reuse in subsequent deploy processes.

graph LR
  subgraph CI
    git[("Source Control")]
    bp["Build & Package"]
    registry[("Artefact Store")]
  end
  qa["✓ qa"]
  pp["✅ pp"]
  pr["✅ pr"]

  git -->
  bp -->
  registry -->
  qa -->
  pp -->
  pr

classDef dashed stroke-dasharray: 2
class CI dashed

After the CI process, the pipeline tool may perform additional value add processes that are not directly related to delivery, i.e. publishing test results or code coverage.

The pipeline then retrieves the release package, and then triggers one or more deployments to promote a release to production. This is the CD process.

graph LR
  git[("Source Control")]
  bp["Build & Package"]
  subgraph CD
    registry[("Artefact Store")]
    qa["✓ qa"]
    pp["✅ pp"]
    pr["✅ pr"]
  end

  git -->
  bp -->
  registry -->
  qa -->
  pp -->
  pr

classDef dashed stroke-dasharray: 2
class CD dashed

The triggering of each stage of the promotion can be immediate (indicated with ✓ in the diagram above) or require a manual approval (✅), but it is expected the deployment process itself is fully automated once it has been triggered.

Using the seeded solution from the previous material, it is recommended that this is executed in your pipeline as a do nothing verification. See the orchestration examples in GitHub for guidance: