Skip to content

Feature: automated release pipeline and changelog gate - #101

Merged
SandObserver merged 2 commits into
mainfrom
feat/release-automation
Aug 17, 2026
Merged

SandObserver merged 2 commits into
mainfrom
feat/release-automation

Conversation

@SandObserver

Copy link
Copy Markdown
Owner

Summary

  • Add scripts/changelog.js, changelog-check.js, release-prep.js and release-notes.js: a shared parser, a structure gate with advisory style warnings, the release file edits, and notes extraction for a release page.
  • Run changelog-check.js in the shared checks action, and again with --release on the release path so the changelog, api/package.json and the render.yaml demo pin must name one version.
  • Add release-prep.yml, dispatched with a version, which prepares the four files and opens a Release: X.Y.Z pull request.
  • Add release-tag.yml, which tags vX.Y.Z when a merge to main lands a version the changelog already describes as released, skipping an existing tag.
  • Add a release-page job to release.yml that publishes the page from the changelog section after the image is pushed, with --verify-tag and prerelease classification.
  • Authenticate all three as a GitHub App via RELEASE_APP_ID and RELEASE_APP_PRIVATE_KEY; GITHUB_TOKEN is left with no scope in those workflows.
  • Document the flow in docs/releasing.md and the new check in CONTRIBUTING.md.

Testing
All green. Added 20 tests across two files: changelog parsing, nine structural mutations that must fail the gate, the prep and notes transforms, and the workflow wiring that the automation depends on.

Checklist

  • Stays within the project constraints: one container, no runtime dependencies, no build step (see CONTRIBUTING.md).
  • Tests added or updated for new logic, and the full suite, lint, and typechecks pass.
  • Docs updated if behavior or configuration changed.
  • CHANGELOG.md updated under Unreleased if the change is user-visible.

Cutting a release took a version bump committed straight onto main, a hand
pushed tag, and a release page written by hand. The default branch now requires
a pull request, so the bump only lands by bypassing the rule, and the page has
been forgotten once.

Add a dispatched prep workflow that dates the changelog section, writes the
compare link, bumps api/package.json and moves the demo pin, then opens a pull
request. Merging it tags the release, and the tag build publishes the release
page from the same changelog section.

Add scripts/changelog-check.js to the shared checks: structure fails, style
warns on [Unreleased] only. Authenticate the prep, the tag and the page as a
GitHub App, since GITHUB_TOKEN cannot push to the protected branch and anything
it creates starts no workflow run.
@SandObserver SandObserver added github_actions Pull requests that update GitHub Actions code release Versioning and changelog updates labels Aug 17, 2026
Comment thread scripts/changelog-check.js Fixed
@SandObserver
SandObserver merged commit 7511c1e into main Aug 17, 2026
4 checks passed
@SandObserver
SandObserver deleted the feat/release-automation branch August 17, 2026 01:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github_actions Pull requests that update GitHub Actions code release Versioning and changelog updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants