Skip to content

Workshop 3: CI/CD Pipeline Design & Configuration

Duration: 60 minutes You will leave with: a working .github/workflows/ci.yml with documented before/after timings.

📊 Slides: (link coming)

📓 Logbook: record today's results in your course logbook as we go.

What we do

The repo already ships with a deliberately slow GitHub Actions workflow at .github/workflows/ci.yml. A cold run is ~13 minutes, and almost all of it is one stage: the serial test:api suite, which makes real HTTP calls. We make it fast together, live, improving the file in place, one commit at a time. You follow along in your own fork. Today's steps get the pipeline to ~5–7 minutes; the big collapse (mocking the clients so test:api stops hitting the network) comes in Workshop 5.

  1. We push the repo to your fork and watch the baseline workflow run. We note the duration.
  2. We add dependency caching. Push. Measure the improvement.
  3. We move coverage out of the PR workflow into a nightly one.
  4. We parallelize Jest workers in jest.config.js.
  5. We split the test job into a matrix (api / web) running in parallel.
  6. (Optional, advanced) Shard the api test suite across multiple workers. This is optional polish; we cover it only if there's time.

In this workshop

  • starter/ci-broken.yml: minimal-baseline starter (only if you want to throw away .github/workflows/ci.yml and start over)

Keep your logbook

Record the duration numbers as we go in your course logbook: original local run, first CI run, cached CI run, parallel CI run. This is continuity, not an assignment: we reuse these numbers (and your .github/workflows/ci.yml) in Workshop 6, and everything in Workshop 8.