forked from heavy-duty/rig
The PR-then-tag half of box#83's flow, rig's side. CHANGELOG.md starts with an Unreleased section (feature PRs land their entry as part of the PR — box's convention, now written into CONTRIBUTING alongside the release ritual). On a tag push, release.yml asserts the bare tag equals the tree's own VERSION — a mismatch fails loudly and creates nothing — then creates the GitHub release with that version's changelog section as the body, extracted by changelog_section in .github/scripts/release-lib.sh: one function, sourced by the workflow and driven by test/release.sh against fixtures and the shipped CHANGELOG.md itself. No assets — for a pure-bash tree, the tag's source tarball IS the package. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
31 lines
1.7 KiB
Markdown
31 lines
1.7 KiB
Markdown
# Changelog
|
|
|
|
History before 0.1.0 lives in git — rig grew its version surface (`VERSION`,
|
|
`rig --version`, the side-by-side `versions/<v>` install layout; #35/#36)
|
|
on the way to cutting its first release, and this file starts there.
|
|
|
|
## Unreleased
|
|
|
|
### Added
|
|
|
|
- **Tagged releases, and an installer that installs them** (#32) — the rig
|
|
half of the flow designed in heavy-duty/box#83, near-verbatim. A release
|
|
is a PR, then a tag: the `release: X.Y.Z` PR bumps `VERSION` and stamps
|
|
this file's Unreleased section with version + date; the merge commit is
|
|
tagged bare `X.Y.Z` (box's tag scheme — no `v` prefix). `release.yml`
|
|
turns the tag into the GitHub release — after asserting tag == `VERSION`
|
|
(mismatch fails loudly and creates nothing) — with that version's section
|
|
of this file as the body, extracted by the same `changelog_section` the
|
|
test harness drives. No assets: for a pure-bash tree, GitHub's source
|
|
tarball for the tag IS the package. `install.sh` now defaults to the
|
|
**latest release**: the tag is resolved by following the
|
|
`releases/latest` redirect and reading the `Location` header — no API, no
|
|
token — and the download is `archive/refs/tags/<tag>.tar.gz`. `RIG_REF`
|
|
picks the other two channels: a tag pins (`refs/tags` outranks a
|
|
same-named branch), a branch (`RIG_REF=main`) tracks the development
|
|
tree. Until 0.1.0 is cut the default channel has nothing to resolve and
|
|
dies saying exactly that, naming `RIG_REF=main` as the way to install
|
|
today — it never falls back to main silently, because "I installed the
|
|
latest release" must not quietly mean "I installed whatever main was that
|
|
second". Step 5 of #32 — pinning `BOX_REF` in the host-installs-box path
|
|
— stays open until box cuts its next tagged release.
|