49 lines
3.3 KiB
Markdown
49 lines
3.3 KiB
Markdown
---
|
|
name: feedback_gururmm_build_verification
|
|
description: Before touching the GuruRMM build pipeline, verify locally first — merge-to-main IS the build+deploy. Canonical refs: docs/BUILD.md + the gururmm-build skill. Compile-gate trap.
|
|
metadata:
|
|
type: feedback
|
|
---
|
|
|
|
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-build` skill** — `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 older
|
|
`scripts/build-agents.sh` + `scripts/webhook-handler.py` are 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()`
|
|
in `agent/src/updater/mod.rs`) is ONLY compiled by the Linux agent build — Windows `cargo check`
|
|
CANNOT verify it (`openssl-sys` won'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, run `cargo sqlx prepare` and commit `server/.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]]
|