CI/CD
Continuos Integration (CI)
- Process of automating the build and testing of code
- CI keeps the master branch clean ensuring bugs are caught before the merge
- 4 pillars
Version Control System
Package Management System
Continuous Ingration System
Automated Build Process
Continuos Delivery (CD)
- Principles
- The process for release/deploying software must be repeatable and reliable
- Automate everything
- If somethind difficult or painful, do it more often
- Keep everything in source control
- Done means released
- Build quality in
- Everybody has responsibility for the release process
- Improve continuosly

Releases and Deployments
- Release and deployment
- Separate that in fuynctional and technical release
Functional release
is exposing features to customers
Feature toggles
- Toggle feature without needing to redeploy
Artifact sources
- Build artifacts
- Package repositories
- Container repositories
- Files
- Source Control
Delivery cadence
- 3 types of triggers
- Continuous deployment trigger
- Scheduled trigger
- Manual trigger
Modern Deployment Patterns

Blue-Green
: Prod + prodlike
Canary
: Few users accept to use the new feature
Dark
: Transparent new functionalities for the users (user do not choose)
Progressive Exposure
: Gradually expose the feature to new users
- Jenkins
- CircleCI (not recommended)
- Azure DevOps Pipelines
- Gitlab Pipelines
- Atlassian Bamboo
- XL Deploy/XL Release
Test infrastructure
Availability tests
: URL ping test, health endpoints
- Automate inspect of health
- Release gates
- Events, subscriptions and notifications
- Service hooks: trigger tasks when events happen