chore: automate releases with release-please#43
Merged
Conversation
Manual releases were error-prone in practice: v1.0.1 got tagged without package.json ever being bumped to match, and I had to hand-fix that drift today. Replace the whole manual tag-and-bump flow with release-please: - release-please-config.json / .release-please-manifest.json (seeded at the current 1.0.2): release-type 'simple', extra-files keep server+client package.json AND package-lock.json (both the top-level and nested packages[''].version fields) in lockstep automatically. - release-please.yml runs on every push to main, maintaining one standing Release PR (version + changelog from feat:/fix:/deps:/etc. commits since the last release) and auto-merging it once required CI passes — that merge is what cuts the git tag + GitHub Release. - release.yml no longer creates the GitHub Release itself (release-please does, with a much better categorized changelog); it still builds :latest on every main push and pinned :X.Y.Z/:X.Y images off the tag release-please creates. - CONTRIBUTING.md documents the commit-prefix convention (feat/fix/deps/... vs docs/chore/refactor/... which don't trigger a release) and the new fully-automated flow, with a one-line note on how to switch to a manual-merge gate instead of full auto-merge if ever wanted. Verified: config/manifest JSON valid, all workflow YAML valid, the extra-files jsonpaths resolve against the real lockfiles (checked with jq), server tests still 111/111. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013Lj6nYJQDtLaZFvvEQJGM4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Manual releases were error-prone in practice —
v1.0.1got tagged withoutpackage.jsonever being bumped to match, and I had to hand-fix that drift earlier today. This replaces the whole manual tag-and-bump flow withrelease-please.How it works
release-please-config.json/.release-please-manifest.json(seeded at the current1.0.2):release-type: simple, withextra-fileskeepingserver/package.jsonandclient/package.json— plus both theirpackage-lock.jsons (top-levelversionand the nestedpackages[""].version) — in lockstep automatically. No more manual version editing, ever.release-please.ymlruns on every push tomain, maintaining one standing Release PR with the next version + a changelog built fromfeat:/fix:/deps:/etc. commits since the last release (commit-prefix convention documented inCONTRIBUTING.md). It's set to auto-merge the moment required CI passes — that merge is what actually cuts the git tag + GitHub Release.release.ymlno longer creates the GitHub Release itself (release-please does, with a much better categorized changelog than the old generic auto-notes) — it still builds:lateston everymainpush and pinned:X.Y.Z/:X.Yimages off the tag release-please creates.Why auto-merge (not a manual gate)
Matches the existing precedent in this repo (Dependabot patch/minor already auto-merges).
CONTRIBUTING.mdhas a one-line note on how to switch to a manual-merge gate instead, if preferred later.Verification
release-please-config.json/.release-please-manifest.json: valid JSON.extra-filesjsonpaths resolve against the real lockfiles (checked withjqdirectly — both.versionand.packages[""].versionreturn1.0.2in both lockfiles).🤖 Generated with Claude Code
Generated by Claude Code