Two stalls hit CI in one night with nothing bounding them but the 360-minute
default: a deadlocked test host (silent for 2h41m) and a stalled EPEL mirror
mid-download in the dnf step (probing the pool showed the first mirror in the
current US mirrorlist returning HTTP 500 and sibling mirrors serving
mismatched metadata generations).
- timeout-minutes: 30 on both jobs. Verified live: the cap killed a stalled
job at exactly 30:02.
- dotnet test --blame-hang-timeout 10m: a stuck test host is killed and the
in-flight tests are named with a full process dump, instead of hanging
until the job timeout. Test results (and dumps) upload as artifacts on
failure.
- EPEL setup follows the EPEL quickstart ordering: dnf-plugins-core, enable
CRB, then epel-release. epel-next is not installed: none of the
prerequisites need it, EPEL 10 does not have it, and it is one more
mirrorlist to fetch.
- Matrix: add Ubuntu 26.04 LTS, CentOS Stream 10, and AlmaLinux 10; bump
Fedora 42 (EOL) to 44. README badges and Linux prerequisites updated to
match.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>