chore(ci): speed up pipeline — NuGet cache + prebuilt Playwright image #73

Closed
opened 2026-07-13 13:25:39 +00:00 by not · 0 comments
Contributor

Problem

CI runs sequentially on the single self-hosted runner, so wall-clock ≈ the sum of all jobs (~17 min). Two low-risk speedups need no infra change:

  • NuGet is not cached. Each of the 5 .NET jobs (lint, build, unit, mutation) restores packages from the network. There are no lock files / no central package management, so setup-dotnet's built-in cache doesn't apply — use actions/cache on ~/.nuget/packages keyed on **/*.csproj.
  • Playwright browsers are downloaded every e2e run. infra/run-e2e-check.sh uses node:24 + npx playwright install --with-deps chromium (~150 MB) on each verify-stack. Switch to the prebuilt mcr.microsoft.com/playwright:v1.61.1-noble image (browsers baked; version kept in sync with tests/e2e/package.json).

Scope (this issue)

Quick wins only — keep the serial single-runner layout. Parallelism (add a runner / raise capacity) is deferred as a separate infra decision.

Done when

  • NuGet packages cached across .NET jobs.
  • e2e uses the prebuilt Playwright image, no runtime browser download.
  • Pipeline stays green; docs/frontend-decisions.md note about "no image pinning" updated to reflect the new trade-off.
## Problem CI runs sequentially on the single self-hosted runner, so wall-clock ≈ the sum of all jobs (~17 min). Two low-risk speedups need no infra change: - **NuGet is not cached.** Each of the 5 .NET jobs (lint, build, unit, mutation) restores packages from the network. There are no lock files / no central package management, so setup-dotnet's built-in cache doesn't apply — use `actions/cache` on `~/.nuget/packages` keyed on `**/*.csproj`. - **Playwright browsers are downloaded every e2e run.** `infra/run-e2e-check.sh` uses `node:24` + `npx playwright install --with-deps chromium` (~150 MB) on each `verify-stack`. Switch to the prebuilt `mcr.microsoft.com/playwright:v1.61.1-noble` image (browsers baked; version kept in sync with `tests/e2e/package.json`). ## Scope (this issue) Quick wins only — keep the serial single-runner layout. Parallelism (add a runner / raise capacity) is deferred as a separate infra decision. ## Done when - NuGet packages cached across .NET jobs. - e2e uses the prebuilt Playwright image, no runtime browser download. - Pipeline stays green; `docs/frontend-decisions.md` note about "no image pinning" updated to reflect the new trade-off.
not added this to the Iteration 1 — Walking Skeleton milestone 2026-07-13 13:25:39 +00:00
not added the area:infratype:chore labels 2026-07-13 13:25:39 +00:00
not closed this issue 2026-07-13 13:59:16 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: eho/register-referentie#73