Add per-module GitHub Release tooling#1396
Draft
bpapillon wants to merge 1 commit into
Draft
Conversation
In this monorepo each tag releases one module, but GitHub's auto-notes and compare view span the whole repo and can't be scoped to a directory, so a schematic-js release lists react/components/vue/angular commits too. scripts/release-notes.sh generates notes for a tag (schematic-<module>@x.y.z) covering only commits that touched that module's directory since the previous release of the same module, grouped by conventional-commit type. release.yml runs the script on any module tag push and creates/updates the GitHub Release (RC tags become prereleases); workflow_dispatch backfills existing tags.
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.
In this monorepo each tag releases one module, but GitHub's auto-generated release notes and the compare view span the whole repo and can't be scoped to a directory — so a
schematic-jsrelease ends up listingreact/,components/,vue/andangular/commits too.scripts/release-notes.sh— given a tag (schematic-<module>@x.y.z), finds the previous release of that module via git topology and emits markdown notes covering only commits that touched the module's directory, grouped by conventional-commit type (Features / Fixes / Other, with dep & codegen churn collapsed). Runs locally too:TAG=schematic-js@1.5.0 ./scripts/release-notes.sh..github/workflows/release.yml— runs the script on anyschematic-*@*tag push and creates/updates the GitHub Release (RC tags published as prereleases).workflow_dispatchwith ataginput backfills existing tags (e.g. the 1.5.0 already shipped).Standalone and additive — runs alongside the existing
deploy_*.ymlworkflows without modifying them. Portable to macOS bash (nomapfile/sort -V).