This is the collection of multiple scenarios of CI / CD implementations in different projects.. Each of the scenario has a pros and cons which is not discussed or talked about it here. Intent of this article is to share few of the scenarios (as-is) implemented. Few changes including terminology has been made to ensure flows are fairly consistent and comparable as much as possible.
Continuous Integration (CI): short-lived feature branches, team is merging to master branch multiple times per day, fully automated build and test process which gives feedback within 10 minutes; deployment is manual..
Continuous Delivery (CD): CI + the entire software release process is automated, it may be composed of multiple stages, and deployment to production is manual.
Continuous Deployment: CI + CD + fully automated deployment to production.
Pipeline for one team CI /CD / CT
Scenario : Development and delivery by an independent product development team (Pipeline – Dev, unit test, performance test)
Pipeline for Feature based CI/CD
- Scenario : Feature based development teams (Pipeline – Dev, unit test, integrate test)
Pipeline for CI/CD by two different organizations
- Scenario : Two projects require common deply to prod (Pipeline – Dev, Unit Test, Testing, Pre-Prod)
Continuous Integration for Release by multi team development
- Scenario : Daily deploy to integration, weekly deploy to pre-prod and monthly deploy for prod
CI /CD Pipeline for parallel development
- Scenario : Parallel Development (Pipeline: Daily deploy to integration, weekly deploy to pre-prod and monthly deploy for prod)
Few points on increasing the effectiveness of the CI pipeline / designs
- Traceable versions of the packages from change sets to versions in various environment – dev, test, pre-prod.
- Output of each of the stage triggers appropriate feedback alerts, as appropriate
- Hand off between the stages are understood / documented
- Manual gate review steps are documented
- First step automating the nightly builds and automating tests ; Second step automating the deployments ; Third step automating performance, functional testing
References for further reading on implementing through Jenkins or Bamboo.