Repository navigation
chore(release): generate CHANGELOG from Conventional Commits with git-cliff - #25
Merged
Merged
Conversation
…-cliff Make git-cliff the single source of the changelog: scripts/release.sh now generates the new `## [X.Y.Z]` section from the release's Conventional Commits (`git-cliff --unreleased --tag`), splices it under `## [Unreleased]`, rewrites the compare links, and refuses a release with no consumer-facing commits. The same cliff.toml backs the GitHub Release on tag push, so CHANGELOG.md == the Release. No hand-curation; history <= v0.6.0 is frozen. git-cliff is now a required local tool for release.sh. Docs (README scope/toolchain, /release skill, CLAUDE.md, CHANGELOG header, PR template) updated to match. Closes #24 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
📝 Changelog previewGenerated from this branch's Conventional Commits — this is what the next [Unreleased] |
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.
Summary
Make git-cliff the single source of the changelog — generated from Conventional Commits and feeding both
CHANGELOG.mdand the GitHub Release, removing hand-curation so a tag bump is transparent for pinned consumers. Closes #24.Component(s)
repo-wide · ci · docs (release tooling — no module input/output change)
Type
Release-process / tooling change — no module input/output moved, so there is no module CHANGELOG entry and no dedicated version bump (the new flow takes effect at the next real release). Precedent: the original release automation shipped the same way.
Changes
scripts/release.sh— generate the new## [X.Y.Z]section fromgit-cliff --unreleased --tag, splice it under## [Unreleased], rewrite the compare links; add a git-cliff presence check and an empty-release refusal (chore/ci-only → nothing to release).cliff.toml/.github/workflows/changelog.yml— document the single-source role; reword the PR changelog-preview comment ("published verbatim, no curation").README.md— rewrite Versioning & releasing; add Release scope & pinned consumption (repo-wide tags, independent per-component pins, per-component changelog, machine-discoverable GitHub Release — issue asks Add github repository-factory component #1–feat(components): GCP cookbook — compute-engine + registry-backed network #3); add git-cliff to Toolchain..claude/skills/release/SKILL.md,CLAUDE.md,CHANGELOG.mdheader, PR template — drop the hand-curation model;v0.1.0–v0.6.0history is frozen (it predates the commit gate; regen would empty/misrepresent it).Validation
terraform fmt/validate/tflintpass on the changed components (no.tfchanged → hooks skip)type(scope): subjectwith scope = component — this PR's own commit ischore, so it's correctly omitted from the generated changelogscripts/release.sh 0.7.0 --dry-runend-to-end: multi-type section, per-component scoping (**vpc:**/**ec2:**), correct splice + compare-link rewrite. git-cliff (2.13.1) dates the section today even for an older commit; a chore/ci-only range is correctly refused. Fullpre-commitpass (actionlint, markdownlint, README-structure, secret/whitespace).