:PROPERTIES:
:ID:       5b714c6c-7eaf-4f3f-b4f6-2166ff3a9963
:END:
#+title: CI/CD Summary 
#+filetags: :notes:technical:career:
#+category: Career Concepts

* Summary
CI/CD stands for Continuous Integration and Continuous Delivery/Deployment. It’s a development practice that automates building, testing, and delivering software so code changes can be released quickly and reliably.

** Continuous Integration (CI)

CI means developers frequently merge their code into a shared repository. Every time code is pushed:

1. The code is built automatically.
2. Automated tests run.
3. If something breaks, the team is alerted.

Goal: catch bugs early and ensure new code works with the rest of the project.

** Continuous Delivery / Continuous Deployment (CD)
CD takes the tested code from CI and prepares it for release.

- Continuous Delivery: Code is automatically prepared for production, but a human approves the final deployment.

- Continuous Deployment: Code is automatically deployed to production with no manual approval.

Goal: make releases faster and safer.

** Pipelines
A pipeline is the automated workflow that runs these steps in sequence. Think of it as a script that defines what happens after a code change.

Typical pipeline stages:

1. Source – code pushed to repository
2. Build – compile the application
3. Test – run automated tests
4. Package – create deployable artifact (e.g., Docker image)
5. Deploy – release to staging or production

Example simplified pipeline:

~Code Push → Build → Test → Package → Deploy~

Why CI/CD is useful

- Faster development cycles

- Fewer integration bugs

- Automated testing and deployment

- More reliable releases

Common CI/CD tools

- GitHub Actions

- Jenkins

- GitLab CI/CD

- CircleCI

In short:
CI/CD uses pipelines to automatically build, test, and deploy software whenever code changes are made.
