ci: cache NuGet, cancel superseded runs, test report + coverage summary #198

Merged
marco merged 2 commits from ci/pipeline-improvements into main 2026-07-24 19:24:16 +02:00
Owner

Summary

CI improvements now that marketplace actions resolve on the Forgejo runner (#193). Favours maintained actions over bespoke shell.

  • Cache NuGet (actions/cache) — package folder restored across runs (keyed off the project files); a cache-backend miss degrades to a normal restore.
  • Cancel superseded PR runs — workflow concurrency with cancel-in-progress only on pull_request (never main / a release workflow_call).
  • Job timeouts (timeout-minutes) so a stuck job fails fast instead of eating the runner.

Deferred to #199

The dorny/test-reporter (posts a check-run) and irongut/CodeCoverageSummary (heavy .NET SDK Docker image) actions were slow/unstable on this Forgejo runner, so they were pulled. Test-result reporting + a per-project coverage gate (the repo-wide 85% number isn't viable — GUI/tool projects sit at 18–70%) move to #199 with Forgejo-compatible tooling.

How it was tested

YAML validated; CI green on this PR (the cache/concurrency/timeout changes resolve on the runner).

Checklist

  • CI-only change; just lint/just test unaffected
  • Multi-platform preserved
  • CI green on this PR
## Summary CI improvements now that marketplace actions resolve on the Forgejo runner (#193). Favours maintained actions over bespoke shell. - **Cache NuGet** (`actions/cache`) — package folder restored across runs (keyed off the project files); a cache-backend miss degrades to a normal restore. - **Cancel superseded PR runs** — workflow `concurrency` with `cancel-in-progress` **only on `pull_request`** (never main / a release `workflow_call`). - **Job timeouts** (`timeout-minutes`) so a stuck job fails fast instead of eating the runner. ## Deferred to #199 The `dorny/test-reporter` (posts a check-run) and `irongut/CodeCoverageSummary` (heavy .NET SDK Docker image) actions were slow/unstable on this Forgejo runner, so they were pulled. Test-result reporting + a **per-project** coverage gate (the repo-wide 85% number isn't viable — GUI/tool projects sit at 18–70%) move to #199 with Forgejo-compatible tooling. ## How it was tested YAML validated; CI green on this PR (the cache/concurrency/timeout changes resolve on the runner). ## Checklist - [x] CI-only change; `just lint`/`just test` unaffected - [x] Multi-platform preserved - [x] CI green on this PR
ci: cache NuGet, cancel superseded PR runs, test report + coverage summary
All checks were successful
ci / Lua content lint (pull_request) Successful in 32s
ci / Lint & Test (pull_request) Successful in 10m51s
5296050c36
- concurrency: cancel-in-progress on PR pushes only (never main/release).
- actions/cache for the NuGet package folder (keyed off the project files) — faster runs.
- dotnet test emits TRX + Cobertura; dorny/test-reporter surfaces results in the PR checks
  (non-fatal), irongut/CodeCoverageSummary posts a coverage summary.
- Coverage is report-only for now: the GUI/tool projects sit below the domain code, so a
  repo-wide >=85% fail would break CI; a per-project gate is a follow-up.
- Favours maintained marketplace actions over bespoke shell (they resolve on the runner).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ci: ship the safe wins (NuGet cache, concurrency, job timeouts); defer report/coverage
All checks were successful
ci / Lua content lint (pull_request) Successful in 15s
ci / Lint & Test (pull_request) Successful in 4m8s
ec56024721
The test-reporter + coverage-summary marketplace actions were slow/unstable on the Forgejo
runner (a check-run post + a heavy .NET SDK Docker image) — pull them out and keep the solid,
low-risk wins: NuGet cache, cancel superseded PR runs, and job timeouts. Test reporting + a
per-project coverage gate move to the coverage follow-up with Forgejo-compatible tooling.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
marco merged commit 91afeff125 into main 2026-07-24 19:24:16 +02:00
marco deleted branch ci/pipeline-improvements 2026-07-24 19:24:16 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marco/IsoMmo!198
No description provided.