Release-please multi-package configuration
Why two packages
TradeMasterAPI ships two independently deployable artifacts:
| Package | Path | Tag stream | Version file |
|---|---|---|---|
trademaster-api |
frontend/trademaster_ui |
trademaster-api-vX.Y.Z |
frontend/trademaster_ui/package.json |
console |
console/ |
console-vX.Y.Z |
console/app/version.py |
Before this change, release-please declared a single package at repo root . with
release-type: node. There is no package.json at the repo root, so release-please
could not resolve the primary version file and never bumped frontend/trademaster_ui/package.json,
VERSION, or backend_v2/version.txt. The post-release verify step in release.yml
detected the mismatch and exited 1 on every release.
Additionally, the console had no release tags at all. The "Show build" footer link on
console.raxx.app pointed to releases/tag/console-v0.10.0, which 404'd because
only trademaster-api-v* tags existed. PR #775 added a SHA-commit fallback; this
config change adds the actual console-v* tag stream so the preferred link resolves.
How it works
.release-please-config.json declares two packages:
"packages": {
"frontend/trademaster_ui": {
"release-type": "node",
"package-name": "trademaster-api",
...
"extra-files": ["VERSION", "backend_v2/version.txt"]
},
"console": {
"release-type": "python",
"package-name": "console",
"version-file": "app/version.py"
}
}
release-please opens a separate release PR for each package when qualifying commits land on main. The two release PRs are independent — the console can ship a patch without bumping the API, and vice versa.
Tag naming:
- API releases: trademaster-api-vX.Y.Z (unchanged from before)
- Console releases: console-vX.Y.Z (new)
Changelogs:
- API changelog: frontend/trademaster_ui/CHANGELOG.md
- Console changelog: console/CHANGELOG.md (already existed)
Extra files (updated by every API release PR):
- VERSION — repo-root plaintext version used by build scripts
- backend_v2/version.txt — Flask backend version endpoint
The first release after this merges
The first console-v* tag created will be console-v0.10.0 (or the next bump,
depending on which commits have landed). Once that tag exists, the "Show build" link
in the console footer will navigate to the actual GitHub release page instead of
falling back to the SHA link.
The first trademaster-api-v* tag created after this merges will bump
frontend/trademaster_ui/package.json (currently at 1.5.4) to the next version
determined by the manifest (2.9.0-dev.1 baseline). The manifest seeds both packages
at their current versions so release-please knows where to bump from.
Operator checklist after merging
- Merge the release PR for
trademaster-apiwhen it appears — verifies version files are updated by thepost-release-apiCI job. - Merge the release PR for
consolewhen it appears — verifiesconsole/app/version.pyand creates theconsole-v*tag. - Confirm the "Show build" footer link on
console.raxx.appnavigates to the release.
References
- Issue: #779
- PR #775 (SHA fallback that this supersedes as primary link)
.release-please-config.json— multi-package config.release-please-manifest.json— seeded versions.github/workflows/release.yml— per-package post-release verification jobs