Overview
better-semantic-release (bsr) is a drop-in fork of python-semantic-release with built-in release-safety guards. It keeps the same [tool.semantic_release] configuration schema, the same semantic-release CLI and the same GitHub Action interface — switching over means pointing the uses: line at the fork.
Install the Python package
Section titled “Install the Python package”Install the package into an isolated environment and invoke the compatible
semantic-release command:
uv tool install better-semantic-releasesemantic-release --helppython -m pip install better-semantic-releasesemantic-release --helpThe package and release notes are published on PyPI and GitHub releases.
What the fork adds
Section titled “What the fork adds”- Release-safety guards that run before any commit, tag or push (orphan-tag guard, registry-collision guard, and more); opt out per-repository under
[tool.semantic_release.bsr]. - A hardened publish path: the OCI-based
publish-actionthat creates the GitHub release and uploads assets from a digest-pinned container image. - A signed action-pin registry so consumer repos can verify that the pin they use is the genuine, fresh publisher — see Action-pin registry.
Using it in a workflow
Section titled “Using it in a workflow”- uses: n24q02m/better-semantic-release@<40-char-sha> # <release-version>Pin the full commit SHA and keep the version in the trailing comment — that comment is what Renovate/Dependabot read. See Action pinning and the upstream action contract.
Continue with better-semantic-release
Section titled “Continue with better-semantic-release”Install & usageWire bsr into a repository workflow
Action pinningHow to pin bsr actions safely
Action-pin registryVerify that a pin is genuine and fresh
Release channelsBeta-first releases and stable promotion