Repository navigation
ci(release): work out each module's version and notes from its own commits - #92
Merged
Merged
Conversation
…mmits semantic-release reads every commit since a module's last tag, whichever module the commit changed, so one module's feat raised another's version and appeared in its changelog. release/component-commits.js keeps the commits that change something inside the module's own directory. Each module's own first-release analyzer, or release/component-commit-analyzer.js for the modules that used the plain analyzer, works out the version from those, and release/component-release-notes.js hands the same commits to the release-notes generator. node:test covers the filter against a real git repository, and the shared version calculation runs those tests first. The same design as the API, Code and Gradle repositories.
Arc-E-Tect
added a commit
that referenced
this pull request
Sep 18, 2026
…itory does (#93) Every release workflow here failed when it was started but no version was calculated. Now that a module's version counts only its own commits, that happens whenever a change that releases nothing starts one - #92 itself failed the Spring Rules and Geo Tracker Lens Pack releases this way. The version calculation now reports next_version_empty, as Gradle's does, and every release workflow runs its release, publish, README and release-type jobs only when a version was calculated, with fail_on_empty_version off. next_version could not serve: it falls back to the current version when none is calculated. The existing-tag check stays on, and applies only to a calculated version, since the fallback's tag exists by definition.
Owner
Author
|
🎉 This PR is included in version 1.0.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Owner
Author
|
🎉 This PR is included in version 1.0.2 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Owner
Author
|
🎉 This PR is included in version 0.2.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Owner
Author
|
🎉 This PR is included in version 1.0.2 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Owner
Author
|
🎉 This PR is included in version 1.0.1 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
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.
Each module's version and release notes now come from its own commits. This is the same fix as API #29 (merged and proven on real releases), Gradle #284 and the Code repository's #255, fitted to this repository's layout.
The problem
semantic-release reads every commit since a module's last tag, whichever module the commit changed. So one module's
featraised another module's version and showed up in its changelog.The fix
release/component-commits.jskeeps the commits that change something inside the module's own directory, usinggit diff-tree, with no dependencies. It lives in a new sharedrelease/directory, as in the other repositories.first-release-patch-analyzer.js. Each copy now passes only the module's own commits to the analyzer: two lines, the same in all three.@semantic-release/commit-analyzerdirectly. They now namerelease/component-commit-analyzer.js, with the same options.release/component-release-notes.jshands the same commits to the release-notes generator, for every module that has one.release/component-commits.test.js(node:test, against a real throwaway git repository).semantic-version-calculate.ymlruns it first, so a broken filter can never choose a version.Verified
semantic-release dry-runs in all six module directories, on this branch, against the real tags:
sedr-library's 1.0.1 is owed and legitimate: #76 (
fix(ci)) changed something insedr-library/and was never released. The tests pass (4/4), and actionlint is clean.What merging does
Nothing is released. The release workflows here trigger only on
src/,gradle/and*.gradlechanges, and this PR changes none of those. sedr-library's owed 1.0.1 ships with its next real change.