Go-native latest Apache 2.0 Open for Contributors

semrel

Semantic Releases. Fully Automated. Fully Open.

semrel is the zero-dependency alternative to semantic-release: one static Go binary that reads Conventional Commits, calculates SemVer and ships releases automatically.

Core promises

  • No Node.js, no node_modules, no runtime overhead — one single binary.
  • Air-gap ready: cache plugins once, then release with zero outbound network calls.
  • Supply-chain secure: Cosign signatures, CycloneDX/SPDX SBOMs and SLSA provenance.
  • Every pipeline step is swappable: condition, analyzer, generator, updater, packager, publisher, provider, hook.
Supply Chain Security
30+ Plugins
Monorepo Ready
Language Agnostic
OpenSSF Scorecard

Why semrel?

Release Automation at Enterprise Scale

Go-native, zero-dependency and built for regulated CI/CD environments.

Why semrel over semantic-release or packaging-only tooling?

  • No Node.js runtime: one static Go binary instead of a large npm dependency tree.
  • Automatic SemVer + changelog from Conventional Commits instead of manual release decisions.
  • Air-gap ready: plugin caching enables releases without outbound network access.
  • Supply-chain security by default with Cosign, CycloneDX/SPDX SBOM and SLSA provenance.
Core

Conventional Commits

Analyses your commit history and automatically decides whether a major, minor or patch bump is needed. Configurable bump rules via .semrel.yaml.

Plugin System

Pluggable Pipeline

Every step is an interchangeable subprocess plugin. Swap GitHub for GitLab, change the changelog renderer or add Slack notifications — without touching the core.

Workspace

Monorepo Ready

Multiple independent modules in a single repository — each with its own tag series, config and changelog. Dependency graph and topological release ordering.

Ecosystem

Language Agnostic

Plugins communicate via subprocess protocol and can be written in Go, Python, Rust, Node.js or any other language.

Security

Supply Chain Security

Signed releases with Sigstore Cosign, CycloneDX/SPDX SBOM, SLSA Level 1 Provenance. DCO sign-off and REUSE/SPDX compliance on every PR.

Safety

Dry-Run Mode

Preview what semrel would do without touching anything. Ideal for CI validation: semrel release --dry-run before the actual release.

Changelog

Multi-Format Changelog

Keep-a-Changelog Markdown, GitHub/GitLab Release Notes, ArtifactHub Annotations, OCI Labels, NuGet, PyPI, RSS/Atom — all from a single structured ReleaseNotes model.

Pipeline

Generator Phase (v0.14.0)

New pipeline phase between changelog generation and release: generator plugins can set release notes via stdout and pass them to downstream phases.

CI/CD

GitHub Actions Native

Native action.yml Composite Action, structured JSON release output and reusable workflow templates for CI/CD pipelines.

Insights

Release Analytics

Append-only NDJSON release history tracking, Jira/GitHub issue reference extraction and commitlint for CLI, git range or stdin.

Plugin Ecosystem

30+ Plugins for every stack

Install via semrel plugin install <name> — each plugin lives in its own repository and releases independently.

Conditions

  • github-actions Only on GitHub Actions CI
  • gitlab-ci Only on GitLab CI
  • gitea-actions Only on Gitea Actions
  • generic Generic CI environment

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 Releases & Tags
  • bitbucket Bitbucket Releases & Tags
  • git Local git tag only

Updaters

  • npm package.json version
  • docker Build & push Docker images
  • 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 packaging

Publishers

  • oci OCI registry publishing
  • generic-http HTTP upload targets

Hooks

  • slack Slack Notifications
  • teams Microsoft Teams
  • matrix Matrix / Element
  • email Email notifications
  • jira Close Jira issues
  • gitplugin Git operations post-release

Quick Start

Your first release in 5 minutes

Recommended: validate with --dry-run first, then run in production.

1 Install
terminal
go install github.com/SemRels/semrel/cmd/semrel@latest
semrel --version

# Install plugins as needed
semrel plugin install conventional
semrel plugin install github
semrel plugin install npm
semrel plugin install docker
2 Configure (.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 Release
terminal
# First dry-run — no output, no tag, no release
semrel release --dry-run

# Validate commit messages
semrel lint

# Full release run
semrel release

Roadmap

The road to v1.0.0

semrel evolves continuously. Focus: stability, ecosystem growth and enterprise readiness.

  1. Now Zero-Dependency Core shipped

    Static Go binary with zero Node.js or runtime dependencies.

  2. Now Pluggable Pipeline shipped

    Swappable steps from condition to hook, including packagers and publishers.

  3. Now Monorepo & Workspace shipped

    Multiple modules with their own config and tag series, orchestrated via semrel workspace.

  4. Now Supply-Chain Security shipped

    Cosign signatures, CycloneDX/SPDX SBOM and SLSA provenance for official releases.

  5. Now Air-Gap Ready shipped

    Plugin caching enables releases without outbound network connections in restricted environments.

  6. Next Ecosystem Expansion in progress

    More provider/publisher/packager integrations and deeper CI/CD templates.

  7. Next v1.0 Stabilization planned

    Further stabilization, documented upgrade paths and long-term API/schema guarantees.

Contribute

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 plugins

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 Guide

Find & fix bugs

Try semrel in your projects and report bugs. Good first issues are labeled and new contributors get help with their first PR.

View issues

Improve documentation

Docs, tutorials, example configs or translations — good documentation matters just as much as code.

Docs Repository

Monorepo & workspace

Improve workspace flows, dependency-graph releases and real enterprise monorepo scenarios.

Roadmap

Testing & CI

Write end-to-end tests, cover edge cases, add CI workflows for new platforms — every contribution brings semrel closer to production readiness.

Contributing Guide

Community & feedback

Use semrel in your project and share your feedback. Show what you built — showcases and use cases are very welcome.

GitHub Discussions

Owner & Maintainer

Markus Waldheim

Owner, Creator & Maintainer

@mwaldheim

Thomas Boerger

Owner, Creator & Maintainer

@tboerger

semrel is an open community project under Apache 2.0. All contributions are welcome with DCO sign-off and Conventional Commits.