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
2 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
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ shut. A dropdown inside a dialog opens above the dialog and the dialog doesn't c
|
|||
| `/agents/<name>/terminal` | one agent's live terminal |
|
||||
| `/agents/<name>/subagents/<subagent>/terminal` | one of that agent's subagents' live terminal |
|
||||
| `/reports` | two folded cards, each read only once opened: the **alerts** the swarm's Grafana holds now, the firing ones, with a button for the pending, no-data and error ones and a link to Grafana's own alert list; read through the controller with a Viewer service-account token, and a cross-repo **issue report** |
|
||||
| `/jobs` | the controller's job graph, where agent creation and credential mints show progress, and under it the swarm builder's recent builds of agent config PRs, with what nix printed when one failed, and the review classifier's recent runs, a try-out on a real PR, and its settings |
|
||||
| `/jobs` | the controller's job graph, where agent creation and credential mints show progress, and under it the swarm builder's recent builds (agent config PRs, and agents built from `internal/meta` before a deploy), with what nix printed when one failed, and the review classifier's recent runs, a try-out on a real PR, and its settings |
|
||||
| `/messages` | the swarm-wide message feed: every message between agents, and to them from the operator, reminders and compaction, with a history window and a filter on sender or recipient; a folded **broadcast** card above the feed sends one message to more than one agent at once, and a folded **schedules** card holds the scheduled prompts: add, edit, pause, resume and remove |
|
||||
| `/notifications` | the notification router's flows: a switch for each built-in, every flow drawn as a graph, and an editor for custom flows |
|
||||
|
||||
|
|
@ -498,9 +498,11 @@ shut, and each reads nothing until you open it; a link to
|
|||
a build opens the builds card. The old `/builds` address redirects there and
|
||||
keeps its query.
|
||||
|
||||
The **builds** card lists the agent config PR heads the swarm builder built,
|
||||
newest first, from `GET /api/builder/runs`. Each card shows the repo and PR,
|
||||
the first seven characters of the commit, how the build ended (**built**,
|
||||
The **builds** card lists what the swarm builder built, newest first, from
|
||||
`GET /api/builder/runs`: agent config PR heads, and the agents it builds from
|
||||
`internal/meta` before each deploy (a version bump, the pin fan-out or a merged
|
||||
config PR). Each card shows the repo and PR, or for a deploy's build the agent
|
||||
and `internal/meta`, the first seven characters of the commit, how the build ended (**built**,
|
||||
**failed** or **error**), when it started and how long it took. Select a card to
|
||||
read it: for a failed build, what `nix` printed; for a built one, the system
|
||||
closure; for an error, why no build came back.
|
||||
|
|
|
|||
Loading…
Reference in a new issue