3.7 KiB
3.7 KiB
Start9 Packaging Checklist (0.3.5 style)
This checklist is written for the StartOS 0.3.5 packaging flow used in this repo. Use it as an indicative template for other projects, not a literal one-size-fits-all script.
1) Required packaging scaffold (inside start9/<version>/)
manifest.yamlMakefileDockerfiledocker_entrypoint.shhealthcheck.shinstructions.mdicon.png(and/oricon.svgif desired)
Optional:
scripts/for package-specific helper scripts- prebuilt artifacts (
image.tar,.s9pk) generated by packaging
2) Project-specific values to change
In manifest.yaml:
idtitleversiondescriptionupstream-repo,support-site,marketing-siteinterfaces(port, protocol, TLS, UI flags)config(runtime env/config options)backupmounts/commandsactions(if you expose maintenance actions)
In Makefile:
- package id/version variables
- image name/tag
- paths/targets used by
make ... package
In Dockerfile:
- base image
- runtime dependencies
- app copy paths
- entrypoint/cmd
In scripts:
- read config/env from StartOS mount/env conventions
- write data only to mounted persistent directories
3) What must exist outside start9/
The wrapper is not fully standalone. It builds an image from your app source.
For this CRM package specifically:
backend/server.pyfrontend/(all static assets/UI)
These are copied in Docker build steps. In other projects, these paths, filenames, and build inputs can be different. This document is meant to show the pattern; each project must map to its own app layout.
4) Data + persistence checklist
- Persist DB/files under mounted data path (not container ephemeral path).
- Confirm backup/restore mounts and commands match the manifest volume names exactly.
- Verify restore can start app cleanly and preserve schema/data.
5) Network/interface checklist
- Confirm service listens on the internal container port expected by
manifest.yaml. - Confirm LAN interface protocol settings match actual service behavior (HTTP vs HTTPS/TCP).
- Confirm UI launches from StartOS Interfaces page without cert/protocol mismatch.
6) Build + install flow
- Bump version in:
start9/<version>/manifest.yamlstart9/<version>/Makefile
- Build package:
make -C start9/<version> package
- Install resulting
.s9pkin StartOS. - Start service and check:
- health/logs
- UI launch
- persistence after restart
- backup/restore smoke test
7) Reusable vs non-reusable parts
Reusable:
- overall folder structure and file roles in
start9/<version>/ - packaging workflow (
manifest+Makefile+Dockerfile+ scripts)
Non-reusable without edits:
- app copy paths in Dockerfile
- app-specific env/config keys
- ports/interfaces/protocol values
- backup/restore commands tied to app data layout
8) Planned migration path to StartOS 0.4
When 0.4 is ready for your deployment, use this approach:
- Keep 0.3.5 package stable as the production branch.
- Create a parallel package folder for 0.4 (for example
start9/0.4/). - Port wrapper files (
manifest,Makefile, Docker packaging scripts) to the 0.4 schema/tooling. - Update interface/config/backup definitions to 0.4 expectations.
- Build and install 0.4 package in a test server first.
- Restore a real backup into 0.4 and validate:
- app starts
- UI works
- data integrity is preserved
- backup/restore still works
- Only after successful validation, promote 0.4 package for primary use.
Notes:
- Keep database path and backup format stable where possible to make migration low-risk.
- If schema changes are required, add explicit migration steps and rollback steps before production cutover.