This release is a pre-release and may not be stable for production use.
Auto Semver Action
A custom GitHub Action written in Python to automatically bump semantic versioning, update changelogs, and create Pull Requests — fully configurable.
Usage
Marketplace install snippets often pin an exact release (for example @1.6.3). Prefer the floating major tag for compatible updates:
- name: Auto Semver Bumper
uses: GuyErreich/Action-Semver-Control@v1
See Pinning policy for the floating v1 tag vs exact semver vs SHA pins.
Quickstart
New to this action? Follow docs/SETUP.md end-to-end (GitHub App, secrets, workflows).
Required: Caller workflows must include a concurrency queue when merging multiple PRs to the same branch.
One-command setup (recommended)
From your consumer repository:
uvx --from git+https://github.com/GuyErreich/Action-Semver-Control auto-semver setup
Add workflows without the CLI
- Register a GitHub App — install it on your repo, set variable
GH_APP_CLIENT_IDand secretGH_APP_PRIVATE_KEY. - Add a caller workflow — copy src/auto_semver/setup/scaffolds/auto-semver.caller.yml to
.github/workflows/auto-semver.yml. - Add config — copy src/auto_semver/setup/scaffolds/auto_semver_config.yml to
auto_semver_config.ymland edit branch suffixes.
Regenerate prefilled “add workflow” links for your repo:
python scripts/generate_onboarding_links.py --owner YOUR_ORG --repo YOUR_REPO --branch master
Pin reusable workflows at the floating major tag v1 (for example .../semver-bump.reusable.yml@v1). See Pinning policy.
Features
- Auto bump
major,minor, orpatchdepending on branch type - Add suffixes (
-dev,-rc) depending on the target branch - Auto-create release branches
- Auto-close old release PRs (single branch mode)
- Label bump PRs automatically (
semver-bump) - 100% typed Python (>=3.12)
- No subprocess for git — uses GitPython and Requests; bump/promote refresh lockfiles with the
uvornpmalready on the runner whenlock_syncis enabled, and otherwise update only the project version inside the existing lock - Published on PyPI as
auto-semver-control. The console script staysauto-semver. The action installs that release when it exists, and this checkout until the first publish - Comprehensive test coverage with pytest and pyfakefs
- Modern Python tooling (ruff, mypy, pre-commit, gitleaks secret scan)
CLI Usage
The action installs auto-semver-control for this checkout's version when that release is on PyPI. Install the stable package locally with uv tool install auto-semver-control.
To try a dev or staging publish before it is production, install that pre-release explicitly:
uv tool install --prerelease explicit "auto-semver-control==1.2.3.dev0"
uv tool install --prerelease explicit "auto-semver-control==1.2.3rc0"
1.2.3-dev is published as 1.2.3.dev0, and 1.2.3-rc as 1.2.3rc0. A plain uv tool install auto-semver-control stays on the stable release. The PyPI name auto-semver is a different project.
Manual Promotion
To manually promote a version from one branch to another (e.g., dev -> staging):
auto-semver --github-token <TOKEN> promote --from-branch dev --to-branch staging
Options:
--dry-run: Validate the promotion without creating a PR.
Configuration (auto_semver_config.yml)
start_version: "0.1.0"
suffixes:
dev: "-dev"
staging: "-rc"
main: ""
files_to_update:
- "version.txt"
- "README.md"
Commit Parsing & Grouping
The action supports three intelligent parsing strategies to organize your changelogs and release notes effectively. Grouping is configured via the commit_groups section in your config file.
1. Sectioned Changes (Type 3 - Highest Priority)
Best for large commits covering multiple areas. Use Markdown headers in your commit body.
Commit Message:
feat: major overhaul of auth system
### ✨ Features
- Added OIDC provider support
- Implemented refresh token rotation
### 🐛 Bug Fixes
- Fixed race condition in login flow
- Resolved session timeout issue
Result:
- The bullet points under
### ✨ Featureswill appear in the "Features" group. - The bullet points under
### 🐛 Bug Fixeswill appear in the "Bug Fixes" group.
2. Bullet Points (Type 2)
Great for listing multiple related changes without specific sections.
Commit Message:
fix: update dependency handling
- Upgrade pydantic to v2
- Remove deprecated validation logic
- Fix circular import in config module
Result:
- Each bullet point is treated as an individual change.
- Each point is matched against your
auto_semver_config.ymlpatterns independently.
3. Header Only (Type 1 - Default)
Standard conventional commit format.
Commit Message:
fix(api): handle missing auth header gracefully
Result:
- The entire header is matched against config patterns.
- Grouped based on the prefix (e.g.,
fix:goes to "Bug Fixes").
Configuration Example
Define how regex patterns map to groups in auto_semver_config.yml:
commit_groups:
- title: "✨ Features"
patterns:
- "^feat:"
- "^add:"
priority: 1
- title: "🐛 Bug Fixes"
patterns:
- "^fix:"
- "^resolve:"
priority: 2
License
MIT — see LICENSE.
Metadata
Release files for auto-semver-control 1.8.7.dev0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| auto_semver_control-1.8.7.dev0.tar.gz | 108.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| auto_semver_control-1.8.7.dev0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 250.8 kB
Release files / auto_semver_control-1.8.7.dev0.tar.gz
| Download URL | auto_semver_control-1.8.7.dev0.tar.gz |
|---|---|
| Size | 108.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2bd3f93cb7ad205ab87f405c802aaca20d1703cfe83557c776bf0e9fc9f46fe5
|
|
BLAKE2b-256 checksum How to use checksums |
29bacad2a3a2d00059f67b65df52e91db8c4e9cdb19a6f2ae2938a00592189df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / auto_semver_control-1.8.7.dev0-py3-none-any.whl
| Download URL | auto_semver_control-1.8.7.dev0-py3-none-any.whl |
|---|---|
| Size | 142.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b1bf92f0828cf86706b5652b1209ccac82663199d545258b420121db1e9e6144
|
|
BLAKE2b-256 checksum How to use checksums |
d2dbea26ad05bdbf7b86d3f02078ba0f1159eb0fda3aaccb387a4b872e32502b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|