What Is CI/CD? Continuous Integration and Deployment for Beginners
CI/CD means every change is automatically checked, and working changes are automatically shipped. What continuous integration, delivery, and deployment are, what a pipeline does, why it matters when AI writes your code, and the smallest useful setup for a solo builder.
CI/CD is one of those acronyms that makes simple ideas sound heavy. The idea: every time you change your code, a robot checks it — and if it's good, a robot ships it. No manual steps to forget, no "it worked on my machine."
CI: continuous integration
Continuous integration means that every change pushed to your repository is automatically checked. Typically that includes:
- Install dependencies from scratch.
- Lint — catch likely bugs and style issues. (Linters and Formatters Explained.)
- Type check — for TypeScript projects.
- Run tests. (How to Write Tests With AI.)
- Build the app — the production build catches errors the dev server ignores.
If any step fails, the change is marked with a red ✗, and you know before it goes anywhere near users. If everything passes, you get a green ✓.
The "integration" part refers to merging everyone's changes into the main branch frequently, with the checks proving they still work together. Even solo, the checks are the valuable part.
CD: continuous delivery or deployment
The "CD" has two meanings, one step apart:
- Continuous delivery — every change that passes CI is ready to deploy, and deploying is one click.
- Continuous deployment — every change that passes CI and is merged to
mainis deployed automatically.
Either way, deploying stops being a manual, error-prone ritual and becomes routine.
The pipeline
The sequence of steps is called a pipeline:
Push code → Install → Lint → Type check → Test → Build → Deploy
(any failure stops here ✗)
It runs on a fresh machine every time, which is its secret strength: it proves the project works from a clean start, with only what's in the repository — no forgotten files on your laptop. (Why Does My App Work Locally but Not in Production?.)
Where it runs
- GitHub Actions — built into GitHub, configured with a YAML file in
.github/workflows/. The most common choice for projects on GitHub, with free minutes for public repositories and a monthly allowance for private ones. (GitHub Actions CI Basics walks through a real workflow.) - GitLab CI, CircleCI, Buildkite, and others.
- Your hosting platform — many hosts build and deploy automatically when you push to a connected branch. That's CD built in.
Why it matters more with AI tools
When an AI writes a lot of your code, CI becomes your automated reviewer:
- It catches the common AI mistakes — broken types, failing tests, a build error in a file you didn't look at.
- It's objective. The AI saying "all tests pass" is a claim. A green ✓ from CI is evidence.
- It protects
main. With branch protection on GitHub, a pull request can't be merged until CI passes. (What Is a Pull Request?.) - The AI can use it too. Coding agents can read CI results and fix failures. Claude Code can even run inside GitHub Actions to respond to issues and pull requests. (Claude Code Headless Mode.)
The smallest useful setup
You don't need an elaborate pipeline. For a solo builder, this goes a long way:
- CI on every pull request: install, lint, type check, test, build.
- Branch protection on
main: require CI to pass before merging. - Automatic deploy of
mainthrough your host. - Preview deployments per branch, if your host supports them, so you can click through changes before merging. (Preview Environments for Every Branch.)
That's it. Every change is checked, only checked changes reach main, and main is always what's live.
Common gotchas
- Secrets in CI. Tests that need API keys use the CI system's encrypted secrets, never keys committed to the repository. (What Is .gitignore?.)
- Slow pipelines. If CI takes 20 minutes, people start skipping it. Cache dependencies, and run the fastest checks first.
- Flaky tests that fail randomly teach everyone to ignore red. Fix or remove them.
- Deploying database migrations. Decide when migrations run in the pipeline, and make sure they're safe to run while the old version is still live. (Zero-Downtime Deploys.)
EasySpawn connects each server to GitHub and adds preview deployments per branch — so every change can pass CI and be clicked through on a live copy before it reaches your users. See pricing or join the waitlist.
Related: GitHub Actions CI Basics · Dev, Staging, and Production Explained · Git Branches Explained
Keep reading
What Is WSL? Running Linux on Windows, Explained
WSL lets you run a real Linux system inside Windows without dual-booting or a separate virtual machine to manage. What it is, why web developers use it, how to install it, where your files live, and the performance and networking gotchas.
What Is Vercel? What It Does, What It Costs You, and When to Use Something Else
Vercel is a hosting platform built around frontend frameworks, especially Next.js: push to GitHub and your site is live. What it actually does, what serverless functions mean for your app, where the limits are, and when a regular server is a better fit.