docs: sync runner-topology and SEC-36 rotation prose with 2026-08-07 executed state
This commit is contained in:
+16
-14
@@ -455,20 +455,22 @@ runtime because the x86 Worker cannot build on Linux:
|
||||
|
||||
### Runner capacity is shared and finite
|
||||
|
||||
All CI runs on a co-located `gitea-runner` container on docker host `10.100.0.35` with
|
||||
`maxParallel=1`, and that runner instance is **shared across repos** — it interleaves
|
||||
`dohertj2/mxaccessgw` and `dohertj2/lmxopcua` jobs on the single slot rather than being
|
||||
scoped to this repo (`GET /repos/dohertj2/mxaccessgw/actions/runners` returns
|
||||
`total_count: 0`; the runner is registered at the instance level). Every job in a run
|
||||
(`portable`, `java`, `windows-x86`) executes serially, so queue latency is additive within
|
||||
a run and an active `lmxopcua` run blocks `mxaccessgw` entirely — expect ~20–30 minutes of
|
||||
queue depth under cross-repo contention, not a stuck pipeline. This Gitea version (1.26)
|
||||
also exposes **no run cancel or delete via the API** (`POST .../actions/runs/{id}/cancel`
|
||||
returns 404, `DELETE .../actions/runs/{id}` returns 400), so a superseded or hung run cannot
|
||||
be cleared and holds the slot until it finishes or times out. See
|
||||
`docs/runbooks/TST-30-second-ci-runner.md` for the operator runbook that registers a second
|
||||
runner to relieve this; until that lands, treat single-runner contention as expected, not a
|
||||
CI outage.
|
||||
CI runs on two co-located runner containers on docker host `10.100.0.35` — `gitea-runner`
|
||||
(capacity 4) and `gitea-runner-2` (capacity 2, registered 2026-08-07 per
|
||||
`docs/runbooks/TST-30-second-ci-runner.md`) — and both runner instances are **shared across
|
||||
repos**: they interleave `dohertj2/mxaccessgw` and `dohertj2/lmxopcua` jobs across the
|
||||
combined slots rather than being scoped to this repo (`GET
|
||||
/repos/dohertj2/mxaccessgw/actions/runners` returns `total_count: 0`; both runners are
|
||||
registered at the instance level). Every job in a run (`portable`, `java`, `windows-x86`)
|
||||
still executes serially within that run, so queue latency is additive within a run, but an
|
||||
active `lmxopcua` run no longer blocks `mxaccessgw` entirely the way a single shared slot
|
||||
did — the two runners relieve cross-repo contention. This Gitea version (1.26) also exposes
|
||||
**no run cancel or delete via the API** (`POST .../actions/runs/{id}/cancel` returns 404,
|
||||
`DELETE .../actions/runs/{id}` returns 400), so a superseded or hung run cannot be cleared
|
||||
and holds the slot until it finishes or times out — with two runners this means a single
|
||||
wedged run can still hold slots, because the no-cancel reality is unchanged. See
|
||||
`docs/runbooks/TST-30-second-ci-runner.md` for the operator runbook that registered the
|
||||
second runner.
|
||||
|
||||
When queue depth (or the missing-cancel reality) makes waiting impractical, verify a
|
||||
specific commit out of band instead of waiting behind the queue: run
|
||||
|
||||
Reference in New Issue
Block a user