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, reproduzierbar und supply-chain-gesichert ausliefert.
Kernversprechen & Neuerungen in v0.26.3
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.
Condition, Analyzer, Generator, Updater, Packager (.deb/.rpm via nfpm), Publisher (OCI/HTTP), Provider & Hook — vollständig modular steuerbar.
Reproduzierbare Plugin-Versionen mit SHA256-Prüfsummen in .semrel.lock, automatisches semrel plugin restore und Pre-Flight-Checks per semrel doctor.
Umgebungsvariablen-Interpolation in .semrel.yaml, Scope-basierte Bump-Regeln, taglose Release-Metadaten-Auflösung und idempotente Docker-Tag-Retries.
Native action.yml Composite Action, offizielles JSON Schema (registry.semrel.io) für VS Code / JetBrains Autocomplete und Self-Update via semrel update.
Append-only NDJSON Release-History, Contributor-Metadaten für Plugins, Jira/GitHub Issue-Extraktion und semrel commitlint (--commit-msg-file, Range, 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
# Konfiguration initialisieren (inkl. JSON-Schema)
semrel config init
# Plugins installieren & in .semrel.lock pinnen
semrel plugin install @semrel/conventional
semrel plugin install @semrel/github
semrel plugin install @semrel/npm
semrel plugin restore.semrel.yaml)# yaml-language-server: $schema=https://registry.semrel.io/schemas/core/v1.json
branches:
- name: main
- name: next
prerelease: true
commit_changelog: false
plugins:
- uses: "@semrel/conventional" # Analyzer
- uses: "@semrel/changelog-md" # Generator
- uses: "@semrel/npm" # Updater
- uses: "@semrel/nfpm" # Packager (optional)
- uses: "@semrel/oci" # Publisher (optional)
- uses: "@semrel/github" # Provider
- uses: "@semrel/slack" # Hook
args:
channel: "${RELEASE_CHANNEL:-#releases}"# Pre-Flight Check (Config, Plugins, Git-Status & Tokens)
semrel doctor
# Commit-Messages validieren (Range, Datei oder Stdin)
semrel commitlint --commit-msg-file .git/COMMIT_EDITMSG
semrel lint
# Erst Dry-Run — kein Tag, kein Release, volle Vorschau
semrel release --dry-run
# Vollständiger Release-Durchlauf (oder Monorepo: semrel workspace)
semrel releaseDer Weg zu v1.0.0
semrel entwickelt sich kontinuierlich weiter. Fokus: Stabilität, Ecosystem-Ausbau und Enterprise-Readiness.
v0.1 – v0.10 Zero-Dependency Core & Plugin Runtime shippedStatische Go-Binärdatei ohne Node.js-Abhängigkeiten, Subprocess-Plugin-Runtime und semrel doctor Empfehlungen.
v0.11 – v0.13 Lockfile (.semrel.lock), Air-Gap & Monorepo Workspace shippedReproduzierbare Plugin-Installationen mit SHA256-Prüfsummen, Air-Gap-Restore und Monorepo-Orchestrierung via semrel workspace.
v0.14 – v0.18 8-Phase Pluggable Pipeline shippedNeue Generator-, Packager- und Publisher-Phasen plus semrel plugin update & restore Commands.
v0.19 – v0.24 Scope-Versioning, Registry Analytics & Contributor Metadata shippedScope-basierte Release-Regeln, Download-Tracking in der Registry, optimierte GitHub Actions Defaults und Contributor-Metadaten für Plugins.
v0.25 – v0.26.3 Cosign v3 Bundle, Env-Interpolation & Tagless CI shippedSigstore Cosign v3 (--bundle) Signierung, Env-Var-Interpolation in .semrel.yaml, --commit-msg-file für commitlint, taglose Release-Auflösung und idempotente Docker-Retries.
v0.27+ Ecosystem & Enterprise Adopter Expansion in progressAusbau des 30+ Plugin-Ökosystems, tiefere Enterprise-CI/CD-Integrationen und Onboarding weiterer Production Adopters.
v1.0.0 v1.0 Stabilization & Long-Term Guarantees plannedLangfristige API-, Plugin-Protokoll- und JSON-Schema-v1-Stabilitätsgarantien für kritische Enterprise-Infrastrukturen.
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.