Add a per-job timeout so a wedged build fails in minutes instead of hanging until the runner's 3h cap. 30 min on the nix flake check job (well above a cold-cache rebuild, well under the hard cap) and 5 min on the seconds-long tracker-tag lint. Complements the runner-level self-heal (a watchdog that restarts a deadlocked runner): the job timeout catches a hung job, the watchdog catches a wedged runner.
39 lines
1.4 KiB
YAML
39 lines
1.4 KiB
YAML
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
branches: ["**"]
|
|
|
|
jobs:
|
|
check:
|
|
name: nix flake check
|
|
runs-on: [hive-ci]
|
|
# Bound the job so a wedged build fails in minutes instead of
|
|
# hanging until the runner's 3h cap (or, when the runner itself
|
|
# deadlocks, never). 30 min is well above a cold-cache rebuild
|
|
# (~15 min observed) and well under the 3h hard cap — tune if a
|
|
# legit cold build ever trips it.
|
|
timeout-minutes: 30
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: check
|
|
# Runs all flake checks: formatting (treefmt+rustfmt), cargo test,
|
|
# cargo clippy, and module evaluation. No --no-build: the checks
|
|
# derivations are the canonical source of truth.
|
|
run: nix flake check
|
|
|
|
tracker-tags:
|
|
name: tracker-tag lint
|
|
runs-on: [hive-ci]
|
|
# Pure git+grep — seconds normally; a few minutes is already a hang.
|
|
timeout-minutes: 5
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: lint
|
|
# Flags hash-number tracker tags in source (hive convention is
|
|
# prose, not tags — /knowledge/hive-rules.md). Runs as its own
|
|
# job, kept out of the required checks while the legacy backlog
|
|
# is cleaned up: a hit fails this check (red) without blocking
|
|
# merge. Promote to a required check once the tree is clean.
|
|
# See scripts/check-issue-refs.sh.
|
|
run: sh scripts/check-issue-refs.sh
|