3.3 KiB
Every Claude instance that touches the GuruRMM build pipeline must internalize this before editing agent/server/dashboard code:
Merging to main IS the build-and-deploy trigger — there is no separate build step. A push
to main fires the Gitea webhook → webhook-handler.py on 172.16.3.30 → build-shared.sh (version
bump + [ci-version-bump] commit) → per-component builds (each self-gated on change). New
agent/server/dashboard artifacts land on beta first; prod promotion is deliberate.
Canonical, kept-current references (use these, don't re-derive from the scripts):
projects/msp-tools/guru-rmm/docs/BUILD.md— developer build + pre-merge verification guide.gururmm-buildskill —verify.sh {server|agent|dashboard|all|migrations} [--check]runs the same cargo/npm the server runs, on the right OS, with the gotchas baked in + errorlog on failure.projects/msp-tools/guru-rmm/deploy/build-pipeline/README.md— server-side pipeline source of truth (webhook, Beast/Pluto hosts, signing, dashboard channels, repo↔/opt sync). The repo's olderscripts/build-agents.sh+scripts/webhook-handler.pyare a PRIOR generation — do not follow them.
The traps that break a post-merge build:
- Compile gate: Linux-gated agent code (
#[cfg(target_os="linux")], e.g.is_docker_container()inagent/src/updater/mod.rs) is ONLY compiled by the Linux agent build — Windowscargo checkCANNOT verify it (openssl-syswon't cross-build). The Linux agent build on .30 is the real gate. Build agent changes on the OS family they target; Windows-only paths (MSI/tray/legacy/x86) are gated only by the Beast/Pluto Windows build. - sqlx offline cache: the server build uses
SQLX_OFFLINE=true+server/.sqlx. If you changed queries/migrations, runcargo sqlx prepareand commitserver/.sqlx, or the build fails. - Migration number collisions across branches: check the highest
NNN_on origin/main before naming a new one (verify.sh migrations). Idempotent (IF NOT EXISTS) keeps overlaps harmless. - Webhook builds from origin/main, so verify the COMMITTED state, not the working tree.
Why: merging deploys, so an unverified merge breaks the build or ships broken code. Howard hit this 2026-06-21 — couldn't cross-build the Linux-gated BUG-019 path from his Windows box, so the post-merge Linux build on .30 was the only gate.
How to apply: before merging gururmm changes, run gururmm-build verify.sh for each touched
component (on the OS it targets); read docs/BUILD.md if unfamiliar with the model; after merge,
watch the matching /var/log/gururmm-build-*.log on .30. Promote the dashboard beta→prod only via
promote-dashboard.sh --confirm.
Related: reference_gururmm rmm-dashboard-beta-before-main feedback_dashboard_beta_first feedback_gururmm_build_channel_default feedback_verify_committed_state_before_push reference_guru5070_rust_toolchain reference_sqlx_migrations_immutable gururmm-beast-windows-build-host feedback_gururmm rmm-agent-update-model