- A/B Testing
- Agile
- Automation
- Blue/Green Deployment
- Build
- Canary Release
- Chaos Engineering
- CI/CD
- Cloud-Native
- Code Review
- Configuration Management
- Container
- Continuous Testing
- DevOps Culture
- Docker
- Environment
- Feedback Loop
- Idempotence
- Immutable Infrastructure
- Infrastructure as Code (IaC)
- Infrastructure Monitoring
- Jenkins
- Kubernetes
- Microservices
- Monitoring
- Pipeline
- Post-Mortem Analysis
- Provisioning
- Release
- Repository (Repo)
- Rollback
- Scalability
- Shift Left
- Smoke Testing
- Source Code Management (SCM)
- Vagrant
- Version Control
- Virtual Machine
Continuous Integration and Continuous Deployment/Delivery (CI/CD) is a DevOps practice that automates the integration, testing, and deployment of code changes. Continuous Integration (CI) focuses on automatically building and testing code as it is committed, enabling early detection of errors and promoting collaboration. Continuous Deployment/Delivery (CD) extends automation to the release process, allowing frequent and reliable deployments to various environments. CI/CD pipelines leverage tools like Jenkins, GitLab CI, and Travis CI to create seamless workflows, accelerate feedback loops, enhance quality, and drive agility and innovation in software development.
Use Cases
Automated Testing and Quality Assurance:
- Objective: Maintain code quality and detect errors early in the development cycle.
- Workflow: Developers commit code to a shared repository, triggering automated unit, integration, and acceptance tests. Failed tests are reported immediately, facilitating quick resolution.
- Tools: Jenkins, Travis CI, GitHub Actions
Feature Flagging for Controlled Rollouts:
- Objective: Enable or disable features without altering codebase, allowing for A/B testing or incremental rollouts.
- Workflow: Utilize feature flags within the code, allowing for dynamic enablement or disablement post-deployment.
- Tools: LaunchDarkly, Split.io, Unleash
Multi-Environment Deployment:
- Objective: Automate deployments across different environments like staging, testing, and production.
- Workflow: CI/CD pipelines automatically deploy committed code to respective environments based on the stage of the pipeline. Conditional rules dictate the flow.
- Tools: Kubernetes, Docker, Ansible
Database Schema Evolution and Management:
- Objective: Automate database schema changes without affecting existing data or causing downtime.
- Workflow: Database changes are versioned and automated through the CI/CD pipeline, allowing for rollback and synchronization.
- Tools: Liquibase, Flyway, Redgate SQL Change Automation
Infrastructure as Code (IaC):
- Objective: Manage and provision cloud resources through code.
- Workflow: Infrastructure definitions are stored in version control. CI/CD pipelines use these definitions to create or update cloud resources.
- Tools: Terraform, AWS CloudFormation, Google Cloud Deployment Manager
Links
- Evidence and case studies – Continuous Delivery
- The Role of Continuous Delivery in IT and Organizational Performance
- What is CI/CD? | GitLab
- Continuous Integration and Continuous Delivery (CI/CD) Fundamentals | GitHub Resources
- Release with confidence: How testing and CI/CD can keep bugs out of production | Google Cloud Blog