Automate changelog updates from GitHub releases#28
Merged
Conversation
Set up the GitHub-native release flow: create a release in the GitHub UI (with auto-generated, label-grouped notes) and let CI keep CHANGELOG.md in sync. - .github/release.yml groups auto-generated release notes by PR label (Security, Features, Bug Fixes, Maintenance & Dependencies, Documentation), with a catch-all so unlabeled PRs still appear. - .github/workflows/update-changelog.yml, on release: released, writes the release notes into CHANGELOG.md (stefanzweifel/changelog-updater-action) and commits back to master (git-auto-commit-action). - Normalize changelog headings to "## vX.Y.Z - date" so they match what the action emits, keep the Unreleased anchor + its compare link, and drop the manually-maintained per-version compare links. - Document the release process in the README. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
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.
Follow-up to #27. Sets up the GitHub-native release flow: you create the release in the GitHub UI, and CI keeps
CHANGELOG.mdin sync. No commit-message convention required; your current PR-based workflow stays the same.How releasing works after this
master, labeled so the notes group nicely (security,enhancement,bug,dependencies,documentation).vX.Y.Ztag → Generate release notes → Publish.update-changelog.ymlworkflow writes those notes intoCHANGELOG.mdunder## vX.Y.Z - <date>and commits back tomaster. Packagist picks up the tag automatically.Files
.github/release.yml— groups GitHub's auto-generated notes by PR label (Security / Features / Bug Fixes / Maintenance & Dependencies / Documentation), with a*catch-all so unlabeled PRs still show. Excludesdependabotandignore-for-release..github/workflows/update-changelog.yml— onrelease: released, runsstefanzweifel/changelog-updater-action@v1then commits viastefanzweifel/git-auto-commit-action@v7(permissions: contents: write).CHANGELOG.md— headings normalized to## vX.Y.Z - <date>(matches what the action emits),Unreleasedkept as an anchor with its compare link. The previously hand-writtenUnreleasedbullets are intentionally dropped: at the next release, GitHub's auto-generated notes will capture the already-merged PRs (Support Laravel 13, drop Laravel 12 and update dependencies #25, Add README usage guide and AGENTS.md #26, Harden scheduling against unbounded ranges and invalid input #27) since v4.1.2, so nothing is lost — and keeping them would duplicate against the generated section.README.md— documents the release process.Notes / decisions
latest-versionboth as the heading text and in theUnreleasedcompare URL, so it must equal the real tag (vX.Y.Z). That's why headings carry thevprefix.types: [released], notpublished).Try it
Verified YAML parses; the workflow only runs on a published release, so the first real run will be the next release you cut.
🤖 Generated with Claude Code