Chore: add git-cliff release workflow#554
Open
scode2277 wants to merge 3 commits into
Open
Conversation
frameworks-volunteer
approved these changes
Jul 10, 2026
frameworks-volunteer
left a comment
Collaborator
There was a problem hiding this comment.
Model: z-ai/glm-5.2 Reasoning: medium Provider: openrouter
Security + QA review complete. Approving.
Security: Clean
- All actions pinned to commit SHAs
- Permissions scoped correctly ({} at workflow level, per-job grants only what's needed)
- persist-credentials: false on both checkouts
- Version override input validated with regex before use
- No secrets, tokens, or injection vectors
QA: One non-blocking issue
- The committed file is
CHANGELOG.MD(uppercase extension) but every workflow reference usesCHANGELOG.md(lowercase). On the ubuntu-latest runner (case-sensitive FS),touch CHANGELOG.mdcreates a separate lowercase file, git-cliff writes to the lowercase one, andadd-paths: CHANGELOG.mdonly commits the lowercase version. The uppercaseCHANGELOG.MDwill sit empty and unused in the repo. Rename toCHANGELOG.mdto avoid confusion. Not blocking since the workflow still functions.
Minor note: checkout is pinned to v5.0.1 while the deleted release-please.yml used v6.0.3. Not an issue functionally, just flagging in case the downgrade was unintentional.
The two-workflow design (release-pr on push to main, release-publish on release PR merge) is well thought out. The if guard that skips release-pr when the commit message contains chore(release): correctly prevents infinite loops. The release-publish trigger conditions (merged + base=main + head starts with release/ + has release label) are properly guarded.
Deploying frameworks with
|
| Latest commit: |
e4f4f5e
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://aac418b1.frameworks-573.pages.dev |
| Branch Preview URL: | https://fix-release-configs.frameworks-573.pages.dev |
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.
What does this PR change?
Add automated release workflow (git-cliff)
What this does
Every merge into main now opens a release PR with a generated changelog. Merging that PR creates the tag and publishes the GitHub Release. Nothing is tagged or published without a human merging the release PR first.
Why not release-please
We started with release-please but hit a wall: it only reads Conventional Commits, and anything that isn't feat:/fix:/deps: is invisible to it. Our contributors write freeform PR titles, and we don't want to force a naming convention on them or rename titles by hand each month. We also don't squash the monthly develop to main merge into a single commit, so the tool would either see nothing or drop most of the history.
We also ran into a setup issues worth recording: the default token couldn't open PRs until the repo setting was enabled.
Why git-cliff
git-cliff reads commits, not just conventional ones, and groups changelog entries by PR label instead of commit prefix. Since we already label PRs consistently (content:add, content:update, enhancement, certifications, dependencies), the changelog organizes itself with zero contributor friction. Freeform titles still show up, grouped correctly, each linked back to its PR and author.
How it works
Two workflows:
Config lives in cliff.toml (grouping rules, section names, skip rules for merge/release commits and dependency PRs).
Notes
Versioning is v0.0.x auto-increment for now (beta). There's a manual override input on the workflow if we ever need to set a specific version + dependencies-labelled PRs are intentionally hidden from the changelog so it's not overloaded by them.
Before merging this we have to enable the workflows to open PRs in the settings (Settings → Actions → General → Workflow permissions → "Allow GitHub Actions to create and approve pull requests")
Type of change
If applicable
vocs.config.tswith thedev: trueparameterStuck on anything? Just write it here and we're happy to help.