feat(demo): deploy/demo and the wipe + baseline workflows (step 5) #227
Reference in New Issue
Block a user
No description provided.
Delete Branch "feature/demo-deploy"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What & why
Step 5 of the demo plan (website#222,
docs/website/DEMO_MODE.md§7 and §10). These are the files that deploy and wipe demo.runicgateway.com on thedemo-siterunner. Decisions DM22–DM24 were taken today and are recorded in the docs PR.deploy/demo/docker-compose.ymlDEMO_MODE=trueand adds a healthcheck on/status. Mounts the fixture at/app/deploy/demo/seed.json.MODULEScomes fromstate/modules.envas a secondenv_file, so the workflow never edits the.envthat holds the secrets. The project name is fixed (rg-demo) so the smoke check can join the network.deploy/demo/.env.exampleBOT_INTERNAL_KEY, because the app refuses to start in production without it even with no bot (found by running it), andMODULE_SOURCE_HOSTS, because a fresh database seeds its install allowlist from it, so without it the declared module is refused.deploy/demo/seed.jsonsite_titleandstatus_message, two news posts, a wiki page, and one published event, "Server greeting", whose step isrust.command.runrunningsay …. Also the rig's server link anddemo-player's Steam link. Passwords, the Steam id and the sidecar URL/token are"$env:NAME".deploy/demo/rig.mjsnode:22.23.4-alpine.planpicks the latest bundlecurrent.json(read through/contents/, not the CDN-cached/raw/) plus the newest Module-Rust release with an equalprotocol, and keeps the previous set when none matches.restorekills the rig, writes a changed bundle (plugin.csfiles, sidecar, launcher,chmodeach one, plus the rig'srust-link/bundle.json), deletes the three directories, unpacksdemo-baseline.tar.gz, then starts the rig.baselinedoes a power stop (which saves the world, DM22), compresses, renames and starts.smokewaits for the site, then waits a bounded time for the rig to report in..gitea/workflows/demo-wipe.ymldeploy/demo/**, and by hand. Order: plan → rig →down -v/pull/up/seed:demo→ smoke. A failed rig restore still wipes the site, then fails the run. Shares concurrency groupdemo-rigwith the baseline workflow..gitea/workflows/demo-baseline.ymlworkflow_dispatchonly.deploy/demo/README.mdstate/holds.How it was tested
mainwith Module-Rust 0.6.0 assembled fromedgethe way its release CI does it. Randown -v→up→ healthy →seed:demowith this fixture. Results: the 4 accounts, content (2 posts, 1 wiki page, 1 event, which validated and published),rustseeded its server and link, anddemo_statewas stamped.GET /public/settingslists 3 logins (play-reviewis hidden) withresetsAton the next even hour.GET /public/rust/serversshows thedemoserver. A multipart POST gets403.rig.mjs planagainst the real Gitea read bundle2026.10.22(protocol 14). It correctly refuses for now: no released module speaks protocol 14 until Module-Rust#64 releases v0.6.0.smokejoinedrg-demo_default, saw the site, and correctly failed on a rig that was offline.egg-oxidetest server, not the demo rig, with no power calls and no plugin changes. Compress, then rename todemo-baseline.tar.gz(1.3 MB), then delete the three directories (32 entries → 0), then decompress. Decompress is synchronous: all 32 entries were back when it answered (220 ms). An 8 MiB binaryfiles/writelanded byte-for-byte, andchmod 755was verified. Cleaned up afterwards, soegg-oxideis as it was.${{ }}.Not yet run: the first real deploy, the baseline capture and the §10 walk. They wait on two things: the host's
.env, and Module-Rust#64 merging so v0.6.0 is released.Note:
rust-oxide's identifier is now6eb9d621; my notes hade6758c06. The workflows default to the new one, and thePTERODACTYL_SERVERvariable overrides it.Checklist
AI-assisted contributions (required)
Claude Code (Claude Opus 5.5). I have reviewed and understandevery change, and take responsibility for it. AI-authored commits are
marked with a
Co-Authored-By/Assisted-Bytrailer.License
(GNU GPL v3.0 or later), and I have the right to contribute it.
🤖 Generated with Claude Code
https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY