C.W.K.
Stream
Lesson 02 of 12 · published

What CD Is — Delivery vs Deployment

~14 min · cd, delivery, deployment

Level 0Apprentice
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

The same letters, two different commitments

CD is overloaded on purpose. The same two letters mean two different things, and the difference matters more than most teams admit.

  • Continuous Delivery — every commit that passes CI is automatically packaged, versioned, and made ready to deploy. A human still clicks a button (or approves a release ticket) to actually push it to production.
  • Continuous Deployment — every commit that passes CI is automatically deployed to production. No human in the loop. The pipeline is the deploy button.

Both require working CI underneath. Delivery is the easier promise: it says we could ship this commit right now if we wanted to. Deployment is the harder promise: it says we are shipping this commit right now, and our test suite plus rollback plan are good enough to bet on it.

Which one do you actually want?

Deployment is glamorous and most teams cannot honestly do it. Delivery is the realistic target until your test coverage, observability, and rollback story are mature. Picking the wrong one — claiming Deployment when your pipeline really only does Delivery — is where outages live.

Code

Delivery — build artifact, gate on manual approval·yaml
name: cd-delivery
on:
  push:
    branches: [main]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./build.sh
      - uses: actions/upload-artifact@v4
        with:
          name: dist
          path: dist/
  deploy:
    needs: build
    runs-on: ubuntu-latest
    environment: production   # requires approval
    steps:
      - uses: actions/download-artifact@v4
        with: { name: dist }
      - run: ./deploy.sh
Deployment — no manual gate, push goes live·yaml
name: cd-deployment
on:
  push:
    branches: [main]
jobs:
  ship:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./test.sh
      - run: ./deploy-to-prod.sh

External links

Exercise

For one project you ship: write down whether you do Delivery or Deployment, then list exactly which step (and which person, if any) gates production. Be honest about whether you actually trust your CI enough to remove the human.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.