c29ac2f2ee
Record the v82 vendor+SRI + render-smoke work in durable docs: packaging guide gains the verified-build gate + re-vendor instructions; Current state rewritten and compressed for v82; ROADMAP logs the deferred pre-compile-JSX alternative.
2.3 KiB
2.3 KiB
paths
| paths | |
|---|---|
|
StartOS packaging & deploy
Read this before building or installing the s9pk. Live target is start9/0.4/.
Bump the version FIRST — every build
Start9 0.4.x ignores a same-version rebuild (the install silently does nothing). Before make:
- Edit
PACKAGE_VERSIONinstart9/0.4/startos/utils.ts. - Add
start9/0.4/startos/versions/v0.1.0.NN.ts. - Register it in
start9/0.4/startos/versions/index.ts: import it, set it ascurrent, and move the priorcurrentintoother[].
Build (x86_64 only)
cd start9/0.4 && make # -> ten-database_x86_64.s9pk
- The default
makegoal isverified-build: it runs the frontend render smoke check (start9/0.4/render-smoke.mjs, via jsdom) before packing, so a build that can't render fails fast. Run it standalone withmake render-smoke(ornode render-smoke.mjs). It (1) transforms the app's inline JSX with the shipped Babel and asserts a classic, non-module, parseable script — catching the v79 Babel-8 ESM-import regression — and (2) mounts the app in jsdom and asserts the login UI renders — catching the v78 blank screen.jsdomis a build-time devDependency (not shipped in the image);npm cipulls it. Front-end libs are vendored + SRI-pinned infrontend/assets/vendor/(React, ReactDOM, Babel) and served same-origin — never re-point them at a CDN. If you re-vendor, regenerate eachintegrity="sha384-…"infrontend/index.htmlwithopenssl dgst -sha384 -binary FILE | openssl base64 -A.
Install — PRODUCTION
start-cli package install -s ten-database_x86_64.s9pk # target host = $START9_BOX_HOST
$START9_BOX_HOSTresolves from your localstart-clicontext config — the real hostname is not in this repo.installprints nothing on success (an empty log is normal, not a failure — and${PIPESTATUS}is a bash-ism, empty under this repo's zsh). Verify the deploy instead with:start-cli package installed-version ten-database # expect the version you just built start-cli package logs ten-database --limit 60 # expect server up on :8080 + a clean migration chain- Get explicit user authorization before any production deploy/install. Verify a new migration against a copy of
data/crm.dbfirst, never the box's DB.