Repository navigation
ci: let release-please maintain CHANGELOG.md - #74
Merged
Merged
Conversation
Every release so far lived only in GitHub Releases. release-please now writes each release's notes to CHANGELOG.md, seeded with the releases it made since 1.8.0, and a behaviour type lists caller-visible behaviour changes first, under "Behaviour Changes".
carlosmayer
approved these changes
Nov 6, 2026
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.
release-please now writes a
CHANGELOG.mdentry with every release, and a change in behaviour that callers must know about gets its own section at the top of that entry.This PR releases nothing.
ciis a hidden type, so release-please opens no release PR for it. The next release PR, for the nextfeatorfix, is the first one that writes toCHANGELOG.md.What changes
release-please-config.json:skip-changelogis nowfalse, and a new sectionbehaviour("Behaviour Changes") is listed first inchangelog-sections. Nothing else in the config changes..release-please-manifest.json(1.12.0) andextra-filesare unchanged and still match the code.CHANGELOG.mdis new, seeded with the six releases release-please made so far (1.8.0 to 1.12.0). Each entry is the text release-please wrote in that release PR, in its own format. One line at the end points to GitHub Releases for older versions.DEVELOPMENT.mdsays the release PR now updatesCHANGELOG.md, and how to flag a behaviour change with an override block.How to flag a behaviour change
DEVELOPMENT.mddescribes the convention. Before merging a PR that changes behaviour for callers, end its body with release-please's commit override block (its begin and end markers are named inDEVELOPMENT.md). Put one line per changelog entry in it: the usualfeat(...)orfix(...)line, then abehaviour(...)line that says what changes for callers. Thebehaviourline lands under "Behaviour Changes", at the top of the release entry.Next to a
featorfixline, abehaviourline does not bump the version on its own: thefeatorfixsets it. Abehaviourline alone still makes a patch release, because it is a visible section.This body names no override markers on purpose. release-please reads the first override block it finds anywhere in a merged PR body, even inside a code fence, so an example here would rewrite this PR's own changelog entry and start a release.
How it was checked
$schemaURL and the one shipped in release-please 17.11.2. The manifest is valid against its schema too.^17.3.0), its own changelog notes and changelog updater added a sample 1.13.0 entry to the seeded file. The entry landed right under# Changelog, with "Behaviour Changes" above "Features", and the seeded entries and the last line stayed in place below it.release-please release-pr --dry-runagainstmainfound no unreleased commits and would open no PR. It reads the config from the remote branch, so it does not exercise this branch's config.Out of scope
CHANGELOG.mdand in the release PR, not on the GitHub release page.