Skip to content
Workshop · 12 chapters · about 3 hours

GitHub Actions: CI/CD from zero.

Take a small app from no automation to tested on every push, released on every tag, shipped as a container and deployed to a live page. Real workflows, running in this repository, explained one chapter at a time.

The pipeline you buildDiagram
Push or pull requeston: push, pull_request
Test · Node 22ubuntu-latest
Test · Node 24ubuntu-latest
Test · Node 22windows-latest
Buildartifact: pulse-dist
Containerbuild and smoke test
Status pagedeploy to Pages

And when you push a version tag:

Tag v0.2.0on: push tags
Releasenotes and package
Publish imageghcr.io

The workflows you write.

Every one of these runs in the repository today. You will write each of them yourself.

One repository, clear parts.

The app, the automation, the lessons and this site each have their own folder, their own checks and their own owner in the pipeline. Nothing is mixed.

backend/
Pulse, the small TypeScript API the pipeline tests, ships and deploys.
.github/workflows/
Seven real workflows. One chapter teaches each.
.github/actions/
A composite action every backend job shares.
workshop/
The chapters, in Markdown. This site renders them.
frontend/
This site: Next.js, deployed on its own.
docs/
Architecture, facilitator guide and changelog.

12 short chapters.

See them all
  1. 01Why CI/CD10 minutes
  2. 02Set up10 minutes
  3. 03Your first workflow15 minutes
  4. 04Continuous integration20 minutes
  5. 05Matrix builds15 minutes
  6. 06Caching and artifacts15 minutes
  7. 07Schedules and manual runs10 minutes
  8. 08Reuse: composite actions and reusable workflows15 minutes
  9. 09Releases on tags15 minutes
  10. 10Containers20 minutes
  11. 11Deploy with environments15 minutes
  12. 12Secure and fast20 minutes

Running in a minute.

You need Node.js 22, git and a GitHub account. Fork the repository so the workflows run under your name, then follow chapter 02.

Fork it on GitHub
bash
git clone https://github.com/jars-demo/github-actions-demo.git
cd github-actions-demo/backend
npm ci
npm test
npm start   # http://localhost:3000/health

More from JARS Demo