| applyTo | VERSION,docs/release-notes.md,.github/workflows/release.yml,Makefile |
|---|
Releases are driven by v* git tags. Pushing a tag triggers
.github/workflows/release.yml, which checks the tag against VERSION, builds
and deploys example/ as a smoke test, then extracts the matching ## vX.Y.Z
section from docs/release-notes.md and publishes it as the GitHub Release body
(re-runs update the existing release instead of failing). Finally it moves the
floating major tag (v5 for a v5.x.y release) to the released commit, so
consumers pinned to @v5 pick the release up.
- Bump
VERSION. That is the single source of truth — the release workflow refuses to publish a tag that does not match it. Note this versions the action, not themetablockclient it installs; the client pin lives in theDockerfileand moves independently. - Add a
## vX.Y.Zsection at the top ofdocs/release-notes.mdwith the notes for the release. The header text is matched verbatim by the workflow'sawkextractor, so it must be## vX.Y.Zexactly (no trailing dash, no title after the version). The release workflow fails if this section is missing. - Commit and merge to
main; let thebuildworkflow pass. - From
main, runmake release— it readsVERSION, asks for confirmation, then creates an annotatedvX.Y.Ztag and pushes it. Thereleaseworkflow takes it from there.
Do not move the major tag by hand — the workflow owns it, and a manual push will be overwritten by the next release.
Note the smoke test deploys the example bundle through the live metablock API,
so a release needs valid METABLOCK_API_TOKEN and METABLOCK_ORG_ID secrets
and will fail if the API is down.
The ## vX.Y.Z section in docs/release-notes.md is published verbatim as the
GitHub Release body, so it must follow these conventions:
- Open with a one-paragraph summary describing the theme of the release. If the
release contains breaking changes, point readers to the Breaking changes
section in that paragraph. A bump of the
metablockclient pin is worth naming in that paragraph, since it is what changes the action's behaviour. - Group entries under H3 subsections in this order:
### Breaking changes,### New features,### Improvements and fixes,### Documentation and assets. Omit any subsection that has no entries. - Every PR reference must be a markdown link of the form
[#NN](https://github.com/quantmind/metablock-web/pull/NN)— never a bare(#NN). GitHub's auto-linking only works in some contexts, and the explicit URL works everywhere. When one entry references multiple PRs, list them comma-separated inside one set of parentheses, each as its own link. - Build the PR list by running
git log vPREV..HEAD --onelineagainst the previous release tag and following each squashed-merge commit back to its PR. Cross-check withgh pr list --state merged --base mainfor any PRs merged since the previous tag. - End the section with a
[Full changelog](https://github.com/quantmind/metablock-web/compare/vPREV...vX.Y.Z)link comparing the new tag against the previous one.