exit lab
DevOps learning path
IntermediateCI/CD

CI/CD

The pipeline that turns a git push into tests, a build, and a deploy — without a human running commands.

1 hr

Overview

Continuous Integration/Continuous Deployment automates what used to be manual: every push runs the test suite, a merge to main builds the app, and a successful build deploys automatically — no one runs those steps by hand.

Why it matters

Manual deployment is where mistakes live — forgetting to run migrations, deploying an untested branch, skipping a step under time pressure. A pipeline runs the same steps, in the same order, every single time, and refuses to deploy if tests fail.

How backend developers use it

A pipeline that runs on every pull request (compile, run unit tests, run integration tests against a throwaway Postgres container) and a separate pipeline that runs only on merge to main (build the Docker image, push it, trigger a deploy) — PR feedback stays fast because it doesn't wait for a deploy.

Common mistakes

Warning

Deploying directly from a developer's laptop "just this once" — the one time it bypasses the pipeline is usually the time something untested ships.

Warning

A pipeline with no test stage, so it becomes Continuous Deployment of whatever compiles, tested or not.

Warning

Secrets hardcoded into the workflow file instead of the CI platform's secret store — the workflow file is usually visible to anyone with repo read access.

Warning

No rollback plan — the pipeline can deploy forward but nobody has practiced deploying the previous version back.

Example commands

Check the status of the last workflow run

gh run list --limit 5

Watch a running workflow live

gh run watch

Resources

Retrieval check

Before you continue

  • Explain what this tool or practice changes in the delivery lifecycle.
  • Name one common failure it helps you diagnose or prevent.
  • Repeat one example command from memory, then verify it.