Go-native latest Apache 2.0 Open for Contributors

semrel

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

  • Kein Node.js, keine node_modules, kein Runtime-Overhead — nur eine Binärdatei.
  • Air-gap ready: Plugins einmalig cachen, danach ohne ausgehende Netzwerkzugriffe releasen.
  • Supply-chain sicher: Cosign Signaturen, CycloneDX/SPDX SBOM und SLSA Provenance.
  • Jeder Pipeline-Schritt ist austauschbar: Condition, Analyzer, Generator, Updater, Packager, Publisher, Provider, Hook.
Supply Chain Security
30+ Plugins
Monorepo Ready
Language Agnostic
OpenSSF Scorecard

Warum semrel?

Release-Automation auf Enterprise-Level

Go-native, zero-dependency und für regulierte CI/CD-Umgebungen gebaut.

Warum semrel statt semantic-release oder reinem Packaging-Tooling?

  • Keine Node.js Runtime: eine statische Go-Binärdatei statt npm-Abhängigkeitsbaum.
  • Automatisches SemVer + Changelog aus Conventional Commits statt manueller Release-Entscheidungen.
  • Air-gap-fähig: Plugin-Cache ermöglicht Releases ohne ausgehende Netzwerkverbindungen.
  • Supply-chain Security by default mit Cosign, CycloneDX/SPDX SBOM und SLSA Provenance.
Core

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.

Plugin System

Pluggable Pipeline

Jeder Schritt ist ein austauschbares Subprocess-Plugin. GitHub gegen GitLab tauschen, Changelog-Renderer wechseln oder Slack-Notifications — ohne Core zu ändern.

Workspace

Monorepo Ready

Mehrere unabhängige Module in einem Repository — jedes mit eigener Tag-Serie, Config und Changelog. Dependency Graph und topologische Release-Reihenfolge.

Ecosystem

Language Agnostic

Plugins kommunizieren via subprocess-Protokoll und können in Go, Python, Rust, Node.js oder jeder anderen Sprache geschrieben werden.

Security

Supply Chain Security

Signierte Releases mit Sigstore Cosign, CycloneDX/SPDX SBOM, SLSA Level 1 Provenance. DCO Sign-off und REUSE/SPDX Compliance auf jedem PR.

Safety

Dry-Run Mode

Vorschau was semrel tun würde, ohne etwas anzufassen. Ideal für CI-Validierung: semrel release --dry-run vor dem tatsächlichen Release.

Changelog

Multi-Format Changelog

Keep-a-Changelog Markdown, GitHub/GitLab Release Notes, ArtifactHub Annotations, OCI Labels, NuGet, PyPI, RSS/Atom — alles aus einem strukturierten ReleaseNotes-Modell.

Pipeline

Generator Phase (v0.14.0)

Neue Pipeline-Phase zwischen Changelog-Generierung und Release: Generator-Plugins koennen Release Notes via stdout zentral setzen und an spaetere Phasen weiterreichen.

CI/CD

GitHub Actions Native

Native action.yml Composite Action, strukturierter JSON Release Output und wiederverwendbare Workflow Templates für CI/CD-Pipelines.

Insights

Release Analytics

Append-only NDJSON Release-History Tracking, Jira/GitHub Issue Reference Extraction und commitlint für CLI, Git Range oder stdin.

Plugin Ecosystem

30+ Plugins für jeden Stack

Installiert per semrel plugin install <name> — jedes Plugin lebt in eigenem Repository und released unabhängig.

Conditions

  • github-actions Nur auf GitHub Actions CI
  • gitlab-ci Nur auf GitLab CI
  • gitea-actions Nur auf Gitea Actions
  • generic Generische CI-Umgebung

Analyzers

  • conventional Conventional Commits Parser
  • default Standard Commit Analyzer

Generators

  • changelog-md Markdown (Keep a Changelog)
  • changelog-html HTML Changelog
  • release-notes Release Notes Generator

Providers

  • github GitHub Releases & Tags
  • gitlab GitLab Releases & Tags
  • gitea Gitea / Forgejo
  • bitbucket Bitbucket
  • git Nur lokale Git-Tags

Updaters

  • npm package.json Version
  • docker Docker Images bauen & pushen
  • helm Helm Chart Version
  • cargo Rust / Cargo Crate
  • python PyPI Package
  • gradle Gradle Version
  • maven Maven Artifact
  • nuget NuGet Package
  • gobinary Go Version Variable
  • homebrew Homebrew Formula
  • terraform Terraform Module Version

Packagers

  • nfpm .deb / .rpm Paketierung

Publishers

  • oci OCI Registry Publishing
  • generic-http HTTP Upload Targets

Hooks

  • slack Slack Notifications
  • teams Microsoft Teams
  • matrix Matrix / Element
  • email E-Mail Benachrichtigungen
  • jira Jira Issues schließen
  • gitplugin Git-Operationen post-release

Quick Start

In 5 Minuten zum ersten Release

Empfohlen: zuerst mit --dry-run validieren, danach produktiv releasen.

1 Installieren
terminal
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
2 Konfigurieren (.semrel.yaml)
.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"
3 Releasen
terminal
# Erst Dry-Run — kein Output, kein Tag, kein Release
semrel release --dry-run

# Commit-Messages validieren
semrel lint

# Vollständiger Release-Durchlauf
semrel release

Roadmap

Der Weg zu v1.0.0

semrel entwickelt sich kontinuierlich weiter. Fokus: Stabilität, Ecosystem-Ausbau und Enterprise-Readiness.

  1. Now Zero-Dependency Core shipped

    Statische Go-Binärdatei ohne Node.js- oder Runtime-Abhängigkeiten.

  2. Now Pluggable Pipeline shipped

    Austauschbare Schritte von Condition bis Hook inkl. Packager und Publisher.

  3. Now Monorepo & Workspace shipped

    Mehrere Module mit eigener Config und Tag-Serie, orchestrierbar über semrel workspace.

  4. Now Supply-Chain Security shipped

    Cosign Signaturen, CycloneDX/SPDX SBOM und SLSA Provenance für offizielle Releases.

  5. Now Air-Gap Ready shipped

    Plugin-Cache ermöglicht Releases ohne ausgehende Netzwerkverbindungen in restriktiven Umgebungen.

  6. Next Ecosystem Expansion in progress

    Weitere Provider-/Publisher-/Packager-Integrationen und tiefere CI/CD-Templates.

  7. Next v1.0 Stabilization planned

    Weitere Stabilisierung, dokumentierte Upgrade-Pfade und langfristige API-/Schema-Garantien.

Mitmachen

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.

Plugins entwickeln

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 Guide

Bugs finden & fixen

Probiert semrel in euren Projekten aus und meldet Bugs. Gute Einstiegs-Issues sind gelabelt und neuen Contributoren wird beim ersten PR geholfen.

Issues ansehen

Dokumentation verbessern

Docs, Tutorials, Beispiel-Configs oder deutsche Übersetzungen — gute Dokumentation ist genauso wichtig wie Code.

Docs Repository

Monorepo & Workspace

Verbessert Workspace-Flows, Dependency-Graph-Releases und reale Enterprise-Monorepo-Szenarien.

Roadmap

Testing & CI

E2E-Tests schreiben, Edge Cases abdecken, CI-Workflows für neue Plattformen hinzufügen — jeder Beitrag bringt semrel näher an Produktionsreife.

Contributing Guide

Community & Feedback

Nutzt semrel in eurem Projekt und teilt euer Feedback. Zeigt, was ihr gebaut habt — Showcases und Use Cases sind herzlich willkommen.

GitHub Discussions

Owner & Maintainer

Markus Waldheim

Owner, Creator & Maintainer

@mwaldheim

Thomas Boerger

Owner, Creator & Maintainer

@tboerger

semrel ist ein offenes Community-Projekt unter Apache 2.0. Alle Contributions werden mit DCO Sign-off und Conventional Commits gerne angenommen.