Conventional Commits
Analysiert euren Commit-Verlauf und entscheidet automatisch ob ein major, minor oder patch-Bump nötig ist. Konfigurierbare Bump-Rules per .semrel.yaml.
Semantic Releases. Fully Automated. Fully Open.
semrel ist die zero-dependency Alternative zu semantic-release: eine statische Go-Binärdatei, die Conventional Commits auswertet, SemVer berechnet und Releases automatisiert ausliefert.
Kernversprechen
Release-Automation auf Enterprise-Level
Go-native, zero-dependency und für regulierte CI/CD-Umgebungen gebaut.
Analysiert euren Commit-Verlauf und entscheidet automatisch ob ein major, minor oder patch-Bump nötig ist. Konfigurierbare Bump-Rules per .semrel.yaml.
Jeder Schritt ist ein austauschbares Subprocess-Plugin. GitHub gegen GitLab tauschen, Changelog-Renderer wechseln oder Slack-Notifications — ohne Core zu ändern.
Mehrere unabhängige Module in einem Repository — jedes mit eigener Tag-Serie, Config und Changelog. Dependency Graph und topologische Release-Reihenfolge.
Plugins kommunizieren via subprocess-Protokoll und können in Go, Python, Rust, Node.js oder jeder anderen Sprache geschrieben werden.
Signierte Releases mit Sigstore Cosign, CycloneDX/SPDX SBOM, SLSA Level 1 Provenance. DCO Sign-off und REUSE/SPDX Compliance auf jedem PR.
Vorschau was semrel tun würde, ohne etwas anzufassen. Ideal für CI-Validierung: semrel release --dry-run vor dem tatsächlichen Release.
Keep-a-Changelog Markdown, GitHub/GitLab Release Notes, ArtifactHub Annotations, OCI Labels, NuGet, PyPI, RSS/Atom — alles aus einem strukturierten ReleaseNotes-Modell.
Neue Pipeline-Phase zwischen Changelog-Generierung und Release: Generator-Plugins koennen Release Notes via stdout zentral setzen und an spaetere Phasen weiterreichen.
Native action.yml Composite Action, strukturierter JSON Release Output und wiederverwendbare Workflow Templates für CI/CD-Pipelines.
Append-only NDJSON Release-History Tracking, Jira/GitHub Issue Reference Extraction und commitlint für CLI, Git Range oder stdin.
30+ Plugins für jeden Stack
Installiert per semrel plugin install <name> — jedes Plugin lebt in eigenem Repository und released unabhängig.
github-actions Nur auf GitHub Actions CIgitlab-ci Nur auf GitLab CIgitea-actions Nur auf Gitea Actionsgeneric Generische CI-Umgebungconventional 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 / Forgejobitbucket Bitbucketgit Nur lokale Git-Tagsnpm package.json Versiondocker Docker Images bauen & pushenhelm Helm Chart Versioncargo Rust / Cargo Cratepython PyPI Packagegradle Gradle Versionmaven Maven Artifactnuget NuGet Packagegobinary Go Version Variablehomebrew Homebrew Formulaterraform Terraform Module Versionnfpm .deb / .rpm Paketierungoci OCI Registry Publishinggeneric-http HTTP Upload Targetsslack Slack Notificationsteams Microsoft Teamsmatrix Matrix / Elementemail E-Mail Benachrichtigungenjira Jira Issues schließengitplugin Git-Operationen post-releaseIn 5 Minuten zum ersten Release
Empfohlen: zuerst mit --dry-run validieren, danach produktiv releasen.
go install github.com/SemRels/semrel/cmd/semrel@latest
semrel --version
# Plugins nach Bedarf installieren
semrel plugin install conventional
semrel plugin install github
semrel plugin install npm
semrel plugin install docker.semrel.yaml)branches:
- name: main
- name: next
prerelease: true
commit_changelog: false
plugins:
- uses: conventional # Analyzer
- uses: changelog-md # Generator
- uses: npm # Updater
- uses: nfpm # Packager (optional)
- uses: oci # Publisher (optional)
- uses: github # Provider
- uses: slack # Hook
args:
channel: "#releases"# Erst Dry-Run — kein Output, kein Tag, kein Release
semrel release --dry-run
# Commit-Messages validieren
semrel lint
# Vollständiger Release-Durchlauf
semrel releaseDer Weg zu v1.0.0
semrel entwickelt sich kontinuierlich weiter. Fokus: Stabilität, Ecosystem-Ausbau und Enterprise-Readiness.
Now Zero-Dependency Core shippedStatische Go-Binärdatei ohne Node.js- oder Runtime-Abhängigkeiten.
Now Pluggable Pipeline shippedAustauschbare Schritte von Condition bis Hook inkl. Packager und Publisher.
Now Monorepo & Workspace shippedMehrere Module mit eigener Config und Tag-Serie, orchestrierbar über semrel workspace.
Now Supply-Chain Security shippedCosign Signaturen, CycloneDX/SPDX SBOM und SLSA Provenance für offizielle Releases.
Now Air-Gap Ready shippedPlugin-Cache ermöglicht Releases ohne ausgehende Netzwerkverbindungen in restriktiven Umgebungen.
Next Ecosystem Expansion in progressWeitere Provider-/Publisher-/Packager-Integrationen und tiefere CI/CD-Templates.
Next v1.0 Stabilization plannedWeitere Stabilisierung, dokumentierte Upgrade-Pfade und langfristige API-/Schema-Garantien.
Gesucht: Contributors!
semrel ist ein Community-Projekt von Markus Waldheim und Thomas Boerger — offen für alle, die mitmachen möchten, egal ob Go-Profi oder Einsteiger.
Schreibt neue Provider, Updater oder Hooks für eure bevorzugten Tools. Plugins sprechen ein einfaches subprocess-Protokoll und können in jeder Sprache implementiert werden.
Plugin Dev GuideProbiert semrel in euren Projekten aus und meldet Bugs. Gute Einstiegs-Issues sind gelabelt und neuen Contributoren wird beim ersten PR geholfen.
Issues ansehenDocs, Tutorials, Beispiel-Configs oder deutsche Übersetzungen — gute Dokumentation ist genauso wichtig wie Code.
Docs RepositoryVerbessert Workspace-Flows, Dependency-Graph-Releases und reale Enterprise-Monorepo-Szenarien.
RoadmapE2E-Tests schreiben, Edge Cases abdecken, CI-Workflows für neue Plattformen hinzufügen — jeder Beitrag bringt semrel näher an Produktionsreife.
Contributing GuideNutzt semrel in eurem Projekt und teilt euer Feedback. Zeigt, was ihr gebaut habt — Showcases und Use Cases sind herzlich willkommen.
GitHub Discussionssemrel ist ein offenes Community-Projekt unter Apache 2.0. Alle Contributions werden mit DCO Sign-off und Conventional Commits gerne angenommen.