CI/CD for Infrastructure

Continuous Integration

In software engineering, continuous integration (CI) is the practice of merging all developer working copies to a shared mainline several times a day. - https://en.wikipedia.org/wiki/Continuous_integration

Continuous Delivery

Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles - https://en.wikipedia.org/wiki/Continuous_delivery

Continous Deployment

Continuous deployment (CD) is a software engineering approach in which software functionalities are delivered frequently through automated deployments. - https://en.wikipedia.org/wiki/Continuous_deployment

Positive Feedback Loop

Branching Strategies

  1. Trunk-based, commit to trunk
  2. Trunk-based with short-lived feature branches
  3. Trunk-based with versioned release branches

Pipelines

Immutable Artifacts

Testing

  • Static analysis
  • Dry run
  • System tests

Environments

Antipatterns

  • Continuous Isolation
  • Testing features by drifting environments
  • Delaying the pain of deploying to production
  • Relying on manual gating to avoid automated testing