Skip to content

chore(release): compose from the shared semantic-release config - #144

Merged
azlekov merged 1 commit into
developfrom
chore/shared-semantic-release-config
Sep 10, 2026
Merged

chore(release): compose from the shared semantic-release config#144
azlekov merged 1 commit into
developfrom
chore/shared-semantic-release-config

Conversation

@azlekov

@azlekov azlekov commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

What changed

release.config.mjs now composes from @dodi-smart/semantic-release-config (v1.2.0) instead of hand-rolling every plugin. Composed, not extended, because this repo needs semantic-release-scope-filter, a cargo set-version exec step, and github options the shared github() helper does not take.

  • semantic-release-scope-filter stays first, unchanged, as this repo's own devDependency (the shared package does not carry it).
  • commitAnalyzer() and releaseNotes() run with no overrides: the repo's rules and types are literally the same set as the shared ones (just reordered), modulo the conventional-changelog-conventionalcommits v10 hidden -> effect rename.
  • changelog stays gated to non-develop branches, unchanged.
  • exec still runs cargo set-version --workspace ${nextRelease.version}.
  • git and github go through the package's plugin() escape hatch rather than their helpers: git's message keeps the repo's v prefix (this repo tags v${version}, the shared helper's default message does not have the prefix), and github keeps successComment: false, releasedLabels: false, assets: [].
  • branches and tagFormat are unchanged.

Behaviour is unchanged. Verified by:

  • Diffing the resolved config (branches, tagFormat, plugin order, and every plugin's options) against the old .releaserc.js, evaluated the same way, on both develop and main: identical except for the two mechanical differences above.
  • A real dry run on develop after linking the shared config with actions/semantic-release-config/install.sh: every shared plugin loaded from the linked prefix, semantic-release-scope-filter loaded from this repo's own node_modules, all verifyConditions passed, and the run correctly concluded "no relevant changes, so no new version is released" (0 commits since the last tag).

Workflow

.github/workflows/release.yml gains one step, linking the shared config into node_modules, right after bun install and before semantic-release:

- uses: dodi-smart/.github/actions/semantic-release-config@v1

Everything else in the workflow, including the separate backmerge job, is unchanged. --extends now points at release.config.mjs (the old .releaserc.js is removed; a .mjs file is always ESM regardless of the type field in package.json, and this package.json has none).

package.json

Removed the devDependencies the shared package now carries: @semantic-release/commit-analyzer, @semantic-release/release-notes-generator, @semantic-release/changelog, @semantic-release/exec, @semantic-release/git, @semantic-release/github, conventional-changelog-conventionalcommits. Kept semantic-release and semantic-release-scope-filter.

This makes Renovate PR #5 (bumping conventional-changelog-conventionalcommits to v10) obsolete, since that dependency no longer lives in this repo's own package.json.

Obsoletes

The dependency these Renovate PRs bump is gone from this repo, so they are superseded by this change.
Closes #5

🤖 Generated with Claude Code

Move release.config.mjs onto @dodi-smart/semantic-release-config instead of
hand-rolling every plugin. Composed, not extended, because this repo needs
semantic-release-scope-filter, a cargo set-version exec step, and github
options the shared helper does not take.

Behaviour is unchanged: branches, tagFormat, plugin order and every option
match the old .releaserc.js exactly, modulo the commit-analyzer rules and
release-notes types being reordered (same rules, same set) and the
conventional-changelog-conventionalcommits v10 hidden -> effect rename.
Verified with a resolved-config diff against the old config on both develop
and main, and a dry run on develop.

package.json drops the plugin devDependencies the shared package now
carries: commit-analyzer, release-notes-generator, changelog, exec, git,
github, conventional-changelog-conventionalcommits. semantic-release and
semantic-release-scope-filter stay.

The release workflow gains one step, linking the shared config into
node_modules, right after bun install and before semantic-release.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Knowledge layer

Check Result
Decision checks passed
Guard trailers passed

Spec currency is reported in the job summary and never fails a build, the same severity the local pre-commit hook uses.

@azlekov
azlekov merged commit ed58410 into develop Sep 10, 2026
8 checks passed
@azlekov
azlekov deleted the chore/shared-semantic-release-config branch September 10, 2026 12:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant