feat(builder): every boot through the node-agent, every lost file counted, Steam cache
What a builder boot sees is now what a node does: - First boots (untouched, or -as-deployed with exactly a new server's settings) are deployed by the node-agent's BootTest in keep mode; the builder only watches the console and inspects what's left. The Go copy of the deploy (its own docker run, mounts and startup prefix) is gone. It had drifted: it gave the image's VOLUME folders their own volumes, which nodes don't, so saves there looked safe while every start loses them. - Files written outside /server and /data are counted whatever their type (it only counted config-like extensions, so .sav or .db saves went unseen), including the image's VOLUME folders; logs, pid and lock files and system folders are left out. - Boot tests ask the server to stay up holdSec (60 s, test.yaml can set it) after its ready line and to listen on every published container port (needs the node-agent's matching BootTest). - Steam apps are downloaded once per build into a gbr.cache volume and copied into each boot, so later boots only check the files (STEAM_CACHE=off). - RUNNER.md no longer suggests docker system prune, which deletes the gbr-boottest network when nothing is using it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e07025f03d
commit
04967a8a16
10 files changed
+424
-171
No files matched your search
+12
-2
@@ -19,8 +19,18 @@ progress / log / variants ◄─post── build: first boot → draft
|
||||
2. The admin picks a variant in the panel.
|
||||
3. **Build** (`gbrgames build -name N -variant @v.json`): first boot of the image untouched (`first-boot`), a
|
||||
draft by the model (`draft`, rules in `AUTHORING.md`), then the draft is deployed with the node-agent's
|
||||
`BootTest`, the same check CI runs. Failures (crash, error lines, saves written outside `/server`) go
|
||||
back to the model, three boots at most.
|
||||
`BootTest`, the same check CI runs. A failed boot is investigated before the model changes anything
|
||||
(see below).
|
||||
|
||||
**Every** server the builder starts, first boots included, is deployed by the node-agent's own code, so
|
||||
it runs exactly as on a node. A boot passes when the server reaches its ready line, stays up for
|
||||
`holdSec` (60 s) after it, and listens on every port the template publishes. Files the server writes
|
||||
anywhere but `/server` and `/data` (the image's own `VOLUME` folders included) are reported as lost:
|
||||
nodes recreate the container on every start.
|
||||
|
||||
Steam games are downloaded once per build into a cache volume (`gbr-steamcache-<app>`, labelled
|
||||
`gbr.cache`) and copied into each boot, so later boots only check the files. `STEAM_CACHE=off` turns
|
||||
it off.
|
||||
4. The worker pushes `games/<id>/` to a branch and opens a pull request as the bot account. A draft that
|
||||
validates but never booted still gets a PR, titled `WIP:`, with what's left listed. Nothing reaches
|
||||
players until a person merges it and enables the game.
|
||||
|
||||
Reference in new issue
Block a user