Repository navigation
ci(release): harden the package release flow - #102
Merged
Merged
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
2 of 7 tasks
sthanikan2000
added this pull request to stack #105
October 9, 2026 15:38
sthanikan2000
removed this pull request from stack #105
October 9, 2026 15:39
sthanikan2000
force-pushed
the
chore/release-flow
branch
from
October 9, 2026 15:53
ef8bb99 to
0ae3687
Compare
sthanikan2000
added this pull request to stack #106
October 9, 2026 15:55
sthanikan2000
force-pushed
the
chore/release-flow
branch
2 times, most recently
from
October 10, 2026 11:16
c32905e to
1aba617
Compare
Make releases per package, with release notes that carry only what changed in that package. PR checks - pr-title.yml: require a Conventional Commit PR title (main is squash-only, so the title is the commit subject). - pr-labels.yml: label each PR with Package/<dir> from its changed files and a Type/* or breaking change label from its title; fail the "Release notes label" check until the PR is classified or marked skip-changelog. - Add a PR template with a consumer-facing "Release notes" section, and a .github/release.yml fallback for GitHub's generate-notes button. Release steps - release-package skill: after the bump PR merges, collect only the PRs that belong to a package (Package/<dir> label or files under packages/<dir>/) since its previous tag, draft the notes, and create a DRAFT GitHub Release pinned to the bump commit. It never tags or publishes. - version-bump.yml: pass inputs through env, require a strictly higher version, fail early if the branch or tag exists, label the PR, and point the PR body at the skill. - release.yml: refuse a tagged commit that is not on main, skip a version that is already on npm, and stage pre-releases under the next dist-tag. Docs - CONTRIBUTING.md: PR titles, labels, and the release procedure with the skill; adding a package. Fix the stale Releasing section in the root README.
sthanikan2000
force-pushed
the
chore/release-flow
branch
from
October 12, 2026 07:09
1aba617 to
b052beb
Compare
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
Packages here release independently, but the release notes didn't: GitHub's generated notes list every merged PR, there were no package or type labels, and the step from a merged bump to a release was manual. This makes the notes per package and tightens the bump and publish workflows.
It follows the
OpenNSW/nsw-srilankarelease procedure where that fits (label-driven notes, auto-labelling plus a label check, a drafting skill) and changes what a monorepo needs: per-package tags, and PRs scoped to a package byPackage/<dir>label or by changed files.Type of change
Changes made
PR checks
pr-title.yml: require a Conventional Commit PR title.mainis squash-only, so the title is the commit subject.pr-labels.yml: addPackage/<dir>from the changed files, andType/New Feature,Type/Bugorbreaking changefrom the title (bots andchore(release)bumps getskip-changelog). The "Release notes label" check fails until the PR is classified..github/release.ymlfallback for GitHub's "Generate release notes" button.Release steps
release-packageskill (.claude/skills/release-package/): after the bump PR merges, collects only the PRs that belong to the package since its previous tag, drafts the notes in the existing format, and creates a draft GitHub Release pinned to the bump commit. It never tags, pushes or publishes.version-bump.yml: inputs go throughenvinstead of being interpolated into shell, the new version must be strictly higher, it fails early if the branch or tag already exists, labels the PR, and its PR body points at the skill.release.yml: refuses a tagged commit that isn't onmain; skips a version that's already on npm (so re-running an approved release is safe); stages pre-releases under thenextdist-tag (npm 11 requires an explicit tag for them).Docs
CONTRIBUTING.md: PR titles, labels, and the release procedure with the skill; adding a package. Fixes the root README's "Releasing" section, which linked a workflow file that doesn't exist.Testing
actionlint,shellcheckandprettier --checkare cleancollect.shreproduces the existingjsonforms-renderers-v0.11.0notes (same PRs, same three new contributors); forauthit returns only feat(auth): add @opennsw/auth shared OIDC helpers #92 from the root commit and nothing afterauth-v0.1.0resolve.shguards: refuses an already-released version, a missing bump commit, a bad package namepr-labels.ymlscript run against 10 mocked scenarios (package labels, bot bump, no package, breaking across two packages, skip + breaking rejected, title edit swaps the type label)pull_request_targetworkflows run frommain, sopr-labels.ymlcan't be exercised on this PR. After merge I'll open a throwaway PR touchingpackages/auth/to check it.Release notes
N/A. No package changes (
skip-changelog).Notes
auth-v0.1.0is tagged atd0bf312as auth's baseline for its first notes.