ci cd
**CI/CD: Continuous Integration / Continuous Deployment**
**Overview**
CI/CD is a set of practices that allow developers to deliver code changes frequently and reliably. It automates the "Path to Production."
**CI (Continuous Integration)**
"Merge often."
1. Developer pushes code to Git.
2. **Build**: Compile the code / docker build.
3. **Test**: Run Unit Tests, Linting, Security Scans.
4. **Result**: Pass/Fail. If Pass, merge to `main`.
**CD (Continuous Deployment)**
"Release often."
5. **Deploy**: Automatically push the passed build to Staging/Production servers.
- Updates AWS Lambda.
- Restarts Kubernetes Pods.
**Benefits**
- **Speed**: No manual "Release Day" stress. Releases happen 10x per day.
- **Safety**: Tests prevent bugs from reaching users.
- **Feedback**: Developers know instantly if they broke something.
**Tools**
- **Jenkins**: Old school, self-hosted, infinite customization.
- **GitHub Actions**: Modern, integrated into Git.
- **GitLab CI**: Integrated into GitLab.
- **CircleCI**: SaaS specific.