mesh/merge-gate head 12a5e7be7321 merged into trunk 23a2e1e20467 — fail: builds build-agent → ace, g14, novox, shanks; no bus step; head 12a5e7be7321 does …
mesh/repo-check head 12a5e7be7321 merged into trunk 23a2e1e20467 — fail: head 12a5e7be7321 does not merge cleanly into trunk 23a2e1e20467: in conflict modu…
mesh/delivery superseded: a newer head of the same pull request
21 lines
1.4 KiB
Markdown
21 lines
1.4 KiB
Markdown
# build-agent
|
|
|
|
The mesh's build machine as a role every machine can hold (novox/hq ADR 0190). It holds the node seat
|
|
`node-build-agent`: every holder pulls one build at a time from the role's one work queue when it is
|
|
idle, so a tier of many images is built by as many machines as hold the seat and are online, and a
|
|
machine that is off builds nothing and blocks nothing. The controller asks the role, never a machine;
|
|
the outcome names the machine that built it.
|
|
|
|
What a holding machine needs is what the builder always needed, said here once: a container runtime
|
|
(the socket is mounted), the artifact store and the package registry as provisions, a workspace, and
|
|
the bus credential. The code is `cmd/mesh-builder` in the mesh-controller repository, compiled from
|
|
that repository's main (`build.artifacts[].context`); this module ships the packaging.
|
|
|
|
Assign it to every machine with a container runtime. It replaces `builder`, the one-holder form of the
|
|
same thing; retire that once this is assigned where it was.
|
|
|
|
A send that replaces the agent's container does not throw away the build it runs: the container declares
|
|
`busy` as `/usr/local/bin/mesh-builder busy` (novox/hq ADR 0335). The node-engine asks it before replacing it; from that
|
|
ask the agent takes no new build, the node-engine leaves it running while it says a build is in hand, and
|
|
replaces it once it says idle, or after 15 minutes at the latest.
|