the builds list keeps the swarm's deploy builds too
build_meta, the build of each agent from internal/meta before a deploy, now writes its result into the same list as the config PR builds: the agent, the internal/meta commit, how it ended and what nix printed. The builds card titles them by agent and shows them with the PR builds.
This commit is contained in:
parent
221c3f35a1
commit
b74011bb54
1 changed files with 212 additions and 33 deletions
|
|
@ -61,8 +61,9 @@ Where it runs and how it's enabled: [`services.md`](services.md#builder).
|
|||
|
||||
## Build records
|
||||
|
||||
`swarm-controller` records each build when it writes the final status:
|
||||
built, failed, or no build ran or came back. The newest 100 are one JSON
|
||||
`swarm-controller` records each config PR build when it writes the final status:
|
||||
built, failed, or no build ran or came back. It also records each [deploy-gate
|
||||
build](#deploy-gate) the builder answers, in the same list. The newest 100 are one JSON
|
||||
array under the key `recent` in the `builder-runs` KV bucket on the swarm
|
||||
queue, which only the controller reads or writes. It creates the bucket on
|
||||
first use and adds each build with a compare-and-set write, so the records
|
||||
|
|
@ -72,8 +73,12 @@ toward the 100.
|
|||
|
||||
Each record has:
|
||||
|
||||
- `id`: `<agent>-<first 12 characters of the commit>-<started_unix>`
|
||||
- `repo` (`agent-configs/<agent>`), `pr` and `head_sha`
|
||||
- `id`: `<agent>-<first 12 characters of the commit>-<started_unix>` for a
|
||||
config PR's build, `meta-<agent>-<first 12 characters of the commit>-<started_unix>`
|
||||
for a deploy's
|
||||
- `repo` (`agent-configs/<agent>`), `pr` and `head_sha`; a deploy's build has
|
||||
`repo` `internal/meta`, no `pr`, the `internal/meta` commit as `head_sha`,
|
||||
and `agent`, the agent it built
|
||||
- `started_unix` and `finished_unix`
|
||||
- `outcome`: `built`, `failed` or `error`, the status's `success`, `failure`
|
||||
or `error`
|
||||
|
|
@ -86,6 +91,13 @@ newest 100. Both are behind the swarm UI vhost's `admins` gate, and answer 503
|
|||
when the controller has no swarm queue or can't open the bucket, 500 when it
|
||||
can't read it.
|
||||
|
||||
The controller records a deploy-gate build when the builder answers it, or when
|
||||
asking it fails (no builder listening, no reply). A build that never got as far
|
||||
as a request (no forge access, no `internal/meta` head) leaves no record, so a
|
||||
controller that can't reach the forge doesn't fill the list with retries. Every
|
||||
ten-minute retry of a failing agent is a record, and a version bump records one
|
||||
build per agent, so the 100 cover fewer days when builds fail.
|
||||
|
||||
The final status links to `https://<swarm domain>/jobs?run=<id>`, the swarm
|
||||
UI's jobs tab, where the builds are a card under the job graph. Selecting
|
||||
**Details** on a red `swarm-builder` check opens that build's card, with `nix`'s tail, in the browser. The raw record
|
||||
|
|
|
|||
Loading…
Reference in a new issue