Zum Inhalt springen

Einführung

semrel automatisiert deine Release-Pipeline, indem es Conventional Commits auswertet, die korrekte nächste SemVer-Version berechnet, einen Changelog erzeugt und konfigurierbare Release-Plugins ausführt — mit null Laufzeitabhängigkeiten.

Manuelle Versionierung ist fehleranfällig und langsam. semrel nimmt dir das Rätselraten ab:

  • Ein feat:-Commit erhöht die minor-Version.
  • Ein fix:-Commit erhöht die patch-Version.
  • Ein Commit mit BREAKING CHANGE: im Footer erhöht die major-Version.
  • Alles ist über deine Git-Historie reproduzierbar und nachvollziehbar.

Automatisierte Versionierung

Analysiert Conventional Commits seit dem letzten Tag und bestimmt automatisch den korrekten SemVer-Bump.

Plugin-System

Jeder Schritt der Release Pipeline kann von einem eigenständigen Plugin-Executable übernommen werden, das von semrel gefunden und ausgeführt wird.

Monorepo-Unterstützung

Versioniere mehrere unabhängige Module in einem Repository, jeweils mit eigener Tag-Historie.

Sprachunabhängig

Plugins sind einfache Executables. Du kannst sie deshalb in jeder Sprache schreiben und über Umgebungsvariablen sowie normale Prozessausführung integrieren.

Jede Phase kann von einem separaten Plugin-Executable übernommen werden. Installiere offizielle Plugins mit Befehlen wie semrel plugin install @semrel/provider-github und konfiguriere sie anschließend in .semrel.yaml.

semrelsemantic-releasegoreleaserrelease-pleaserelease-itchangesets
RuntimeKeine (statische Binärdatei)Node.js + npmKeine (statische Binärdatei)Node.js + npmNode.js + npmNode.js + npm
Auto-SemVer aus Commits❌ tag-basiert❌ manuell
Scope-basierte Bump-Regeln
Air-gap / Offline-CI✅ Nativ
Supply-Chain-SicherheitCosign + SBOM + SLSACosign
Plugin-SpracheBeliebige BinärdateiNur JavaScriptGo (eingebaut)Fest vorgegebenNur JavaScriptNur JavaScript
Monorepo✅ Kostenlos✅ Kostenlos✅ Kostenlos (OSS)

Vollständiger Vergleich: semrel vs semantic-release vs goreleaser vs release-please vs release-it vs changesets