CI/CD pipelines
Intermediate
12 min read
Run tests, checks and the build automatically on every push, and deliver only what passes.
Why it matters
People forget to run tests; machines do not. A pipeline makes every change go through the same checks and the same build, so a release is boring and repeatable.
Where it fits
What you will learn
- Explain continuous integration, delivery and deployment.
- Read a pipeline file: triggers, jobs and steps.
- Decide which checks must pass before merging.
Before you start
- Automated tests✓ Learned
- Branches and pull requests✓ Learned
Three terms
- Continuous integration — every push is built and tested automatically.
- Continuous delivery — every change that passes is ready to release with one action.
- Continuous deployment — every change that passes is released automatically.
A small pipeline
.github/workflows/ci.yml
name: CI
on:
push:
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npm run lint
- run: npm test
Tip: Make the pipeline required for merging (branch protection). A check that can be skipped will be skipped.
Watch out: Pipelines often hold deploy credentials. Store them in the CI system's secret store, never in the pipeline file.
Official documentation and references
Documentation
- GitHub Actions documentation ↗ Official · GitHub
- GitLab CI/CD ↗ Official · GitLab
Guides
- GitHub Actions quickstart ↗ Official · GitHub
Learn next
- Containers with Docker ›✓ Learned
Related topics
- Automated tests✓ Learned
- Build artifacts and versioning✓ Learned
- Dependency and security scanning✓ Learned
- Configuration and secrets✓ Learned
Done with this topic?
Reviewed 2026-10-23. Links go to the official documentation unless marked otherwise.