ci: boot-test changed games before publishing
Only games whose folder changed are boot-tested (against the previous
main commit, or against main on branches; manual runs pick games). Each
one is deployed by the node-agent's real deploy code on a dedicated
game-test runner, in a network that can reach the internet but not the
LAN. Publishing to the panel runs only if they all booted.
- boottest-payload builds the DEPLOY_SERVER message the panel would send
- readyPattern/failPatterns in game.yaml; readyExample in test.yaml is
checked against the pattern during validation
- secrets in test.yaml come from CI; a game missing one is skipped
- Minecraft gets a ready pattern; Dragonwilds needs DRAGONWILDS_OWNER_ID
- RUNNER.md + scripts/runner: runner, isolated network, systemd unit
Also fixes newline values ("\n" separators/footers) that yaml.v3 wrote
as "" on import, which would have broken ARK and Dragonwilds config
files once synced, and adds a round-trip test for the importer.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5fb7736be2
commit
e9ff989246
21 files changed
+585
-18
No files matched your search
@@ -51,6 +51,15 @@
|
||||
"clusterConfig": { "type": ["object", "null"] },
|
||||
|
||||
"logFilePath": { "type": ["string", "null"] },
|
||||
"readyPattern": {
|
||||
"description": "Regex matched against the server's console output and log file once it can accept players. Without one, boot tests only check the server stays up.",
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"failPatterns": {
|
||||
"description": "Regexes that mean the server will not come up (e.g. an unaccepted EULA). Boot tests fail as soon as one matches.",
|
||||
"type": ["array", "null"],
|
||||
"items": { "type": "string" }
|
||||
},
|
||||
"backupPaths": { "type": ["array", "null"], "items": { "type": "string" } },
|
||||
"maxBackupSizeMb": { "type": ["integer", "null"], "minimum": 1 },
|
||||
|
||||
|
||||
@@ -22,6 +22,16 @@
|
||||
"type": "integer",
|
||||
"minimum": 60,
|
||||
"maximum": 7200
|
||||
},
|
||||
"readyExample": {
|
||||
"description": "A real console line from a server that is ready. Validation checks the game's readyPattern matches it, so a broken pattern fails in seconds instead of timing out a boot test.",
|
||||
"type": "string"
|
||||
},
|
||||
"settleSec": {
|
||||
"description": "For games without a readyPattern: how long the server must stay up after starting to pass.",
|
||||
"type": "integer",
|
||||
"minimum": 10,
|
||||
"maximum": 3600
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user