Conventional Commits
Analyses your commit history and automatically decides whether a major, minor or patch bump is needed. Configurable bump rules via .semrel.yaml.
Semantic Releases. Fully Automated. Fully Open.
semrel analyses your Conventional Commits, calculates the next SemVer tag and runs the full release lifecycle — fully plugin-based, monorepo-ready and language-agnostic.
Release Automation at Enterprise Scale
Designed for Go and cloud-native environments — inspired by semantic-release, but built from the ground up.
Analyses your commit history and automatically decides whether a major, minor or patch bump is needed. Configurable bump rules via .semrel.yaml.
Every step is an interchangeable subprocess plugin. Swap GitHub for GitLab, change the changelog renderer or add Slack notifications — without touching the core.
Multiple independent modules in a single repository — each with its own tag series, config and changelog. Dependency graph and topological release ordering.
Plugins communicate via subprocess protocol and can be written in Go, Python, Rust, Node.js or any other language.
Signed releases with Sigstore Cosign, CycloneDX/SPDX SBOM, SLSA Level 1 Provenance. DCO sign-off and REUSE/SPDX compliance on every PR.
Preview what semrel would do without touching anything. Ideal for CI validation: semrel release --dry-run before the actual release.
Keep-a-Changelog Markdown, GitHub/GitLab Release Notes, ArtifactHub Annotations, OCI Labels, NuGet, PyPI, RSS/Atom — all from a single structured ReleaseNotes model.
Native action.yml Composite Action, structured JSON release output and reusable workflow templates for CI/CD pipelines.
Append-only NDJSON release history tracking, Jira/GitHub issue reference extraction and commitlint for CLI, git range or stdin.
30+ Plugins for every stack
Install via semrel plugin install <name> — each plugin lives in its own repository and releases independently.
github-actions Only on GitHub Actions CIgitlab-ci Only on GitLab CIgitea-actions Only on Gitea Actionsgeneric Generic CI environmentconventional Conventional Commits Parserdefault Standard Commit Analyzerchangelog-md Markdown (Keep a Changelog)changelog-html HTML Changelogrelease-notes Release Notes Generatorgithub GitHub Releases & Tagsgitlab GitLab Releases & Tagsgitea Gitea Releases & Tagsbitbucket Bitbucket Releases & Tagsgit Local git tag onlynpm package.json versiondocker Build & push Docker imageshelm Helm chart versioncargo Rust / Cargo cratepython PyPI packagegradle Gradle versionmaven Maven artifactnuget NuGet packagegobinary Go version variablehomebrew Homebrew formulaterraform Terraform module versionslack Slack Notificationsteams Microsoft Teamsmatrix Matrix / Elementemail Email notificationsjira Close Jira issuesgitplugin Git operations post-releaseYour first release in 3 steps
Alpha phase — recommended to test with --dry-run before going live.
go install github.com/GoSemantics/semrel/cmd/semrel@latest
semrel --version
# Install plugins as needed
semrel plugin install github
semrel plugin install npm
semrel plugin install docker.semrel.yaml)branches:
- name: main
- name: next
prerelease: true
plugins:
- uses: conventional # Commit analysis
- uses: changelog-md # Generate CHANGELOG.md
- uses: github # Create GitHub release
- uses: npm # Bump package.json
- uses: slack # Notify team
args:
channel: "#releases"# First dry-run — no output, no tag, no release
semrel release --dry-run
# Validate commit messages
semrel lint
# Full release run
semrel releaseThe road to v1.0.0
semrel is in active development. Every milestone can be followed on GitHub.
v0.1.0 Foundation shippedCLI, SemVer engine, Conventional Commits, Git tag management, dry-run
v0.2.0 Plugin System shippedStable core/plugin boundary, subprocess-based plugin execution model
v0.3.0 CI Integration shippedGitHub Actions native, JSON output, end-to-end tests
v0.4.0 Ecosystem Plugins shippedGitHub, GitLab, Gitea, Bitbucket, npm, Docker, Helm, Cargo, Python, Gradle, Maven and more.
v0.5.0 Monorepo & Advanced in progressChangelog engine, workspace discovery, independent versioning, dependency graph, pre-release channels — currently active
v1.0.0 Stable Release plannedProduction-ready, complete documentation, plugin SDK for third-party plugins
Looking for Contributors!
semrel is a community project by Markus Waldheim and Thomas Boerger — open to everyone who wants to contribute, whether you're a Go expert or a beginner.
Build new providers, updaters or hooks for your preferred tools. Plugins use a simple subprocess protocol and can be implemented in any language.
Plugin Dev GuideTry semrel in your projects and report bugs. Good first issues are labeled and new contributors get help with their first PR.
View issuesDocs, tutorials, example configs or translations — good documentation matters just as much as code.
Docs RepositoryThe next major milestone: workspace discovery, independent versioning, dependency graph. Ideal for Go developers with large repositories.
Roadmap v0.5.0Write end-to-end tests, cover edge cases, add CI workflows for new platforms — every contribution brings semrel closer to production readiness.
Contributing GuideUse semrel in your project and share your feedback. Show what you built — showcases and use cases are very welcome.
GitHub Discussionssemrel is an open community project under Apache 2.0. All contributions are welcome with DCO sign-off and Conventional Commits.