## glossary

What is CI/CD?

CI/CD is the practice of automating the integration, verification and delivery of code changes. The acronym joins two related but distinct ideas: CI (Continuous Integration) and CD — which can mean Continuous Delivery or Continuous Deployment, depending on how far the automation goes.

The three acronyms, without the confusion

  • Continuous Integration (CI) — every push automatically triggers build and tests, catching conflicts and regressions in minutes instead of weeks.
  • Continuous Delivery (CD) — every approved commit produces a production-ready artifact, but the final deploy depends on human approval.
  • Continuous Deployment (CD) — the step beyond: once it passes the tests, it goes to production on its own, no click required.

The distinction between the two "CDs" matters in practice. Continuous delivery is the right fit when there is regulation, a maintenance window or a need for coordination. Continuous deployment demands high confidence in the test suite and in rollback mechanisms.

The problem continuous integration solves

Before CI, teams worked for weeks on separate branches and integrated everything at the end — the so-called "integration hell", where accumulated conflicts turned into days of work. Integrating continuously trades one large, unpredictable pain for many small, trivial ones.

CI pipeline with GitHub Actions
name: CI
on: [push, pull_request]

jobs:
  verify:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: npm
      - run: npm ci
      - run: npm run lint
      - run: npm test -- --coverage
      - run: npm run build

What a mature pipeline is made of

A complete pipeline usually chains: static analysis and lint, unit tests, artifact build, integration tests, security scanning of dependencies, deploy to a staging environment, end-to-end tests, and finally production. Every stage that fails stops the line and notifies whoever made the change.

Deployment strategies that reduce risk

  • Rolling update — replaces instances gradually, keeping the service up.
  • Blue-green — keeps two identical environments and switches traffic all at once, allowing instant rollback.
  • Canary — sends a small fraction of traffic to the new version and widens it as the metrics confirm stability.
  • Feature flags — the code ships to production turned off and is activated by configuration, separating deploy from release.

Good practices

Keep the pipeline fast — past ten minutes, people stop waiting and the feedback loses value. Failures should be deterministic: flaky tests erode trust until everyone starts ignoring the red. And automate the rollback, because what keeps you safe is not never failing — it is being able to go back in seconds.

## faq

Frequently asked questions

What is the difference between continuous delivery and continuous deployment?

In continuous delivery, every approved change is ready to go to production, but someone has to authorize it. In continuous deployment there is no manual approval: it passed the tests, it shipped. The difference is only that last human step.

Do I need CI/CD in a personal project?

A minimal pipeline running lint, tests and build already pays off even in solo projects — it prevents shipping broken code and documents how the project is built. Tools like GitHub Actions offer a free tier that is plenty for that.

Which CI/CD tools are the most used?

GitHub Actions dominates projects hosted on GitHub thanks to its native integration. GitLab CI is standard for GitLab users. Jenkins remains strong in corporate environments with specific needs, and CircleCI and Azure DevOps hold relevant niches.