You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 012191e
Browse filesBrowse the repository at this point in the historyBrowse files
refactor(coverage,ci): extract Taskfile bash to scripts, unify coverage, reuse in CI
Coverage was five disjoint profiles that never combined, so the headline number
only reflected hermetic unit tests and the per-package gate ran on that subset.
The parity coverage tasks were also near-identical copies with inline awk/bash.
Scripts (all bash lives in scripts/ now, simplified + more robust):
- pkgcov.awk weighted per-package aggregation, shared by report + gate
- coverage-report.sh per-package Markdown table + total from a profile or covdata dir
- coverage-gate.sh total + per-package floor enforcement (replaces inline awk)
- coverage-merge.sh union every per-lane covdata dir into the true cross-lane number
- docker-cache-export.sh the buildx cache-export precondition (was duplicated inline)
- ci-prepare-runner.sh free disk + containerd store (was duplicated in 4 CI jobs)
- parity-affected-commands.sh the PR diff→PARITY_COMMAND step (was inline in the workflow)
- parity-affected.sh moved from .github/scripts so all scripts sit together
Taskfile:
- coverage keeps coverage.out byte-identical (gate unchanged) but also emits
binary covdata via -test.gocoverdir so lanes can be merged.
- every lane writes covdata under artifacts/coverage/data/<lane>; the 3
coverage:parity-* tasks collapse into one internal coverage:_parity-lane.
- new coverage:merge prints the union across all lanes; new ci:prepare-runner.
CI reuses the Taskfile instead of duplicating bash: docker prep → task
ci:prepare-runner, the affected-commands step → scripts/parity-affected-commands.sh,
each coverage lane posts its table to $GITHUB_STEP_SUMMARY and uploads its covdata,
and a new coverage-report job merges the PR lanes (unit+e2e+contract) into one
summary. The daily full job merges its runtime+publish lanes the same way.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments