Go-native v0.4.x Alpha Apache 2.0 Open for Contributors

semrel

Semantic Releases. Fully Automated. Fully Open.

semrel analyses your Conventional Commits, calculates the next SemVer tag and runs the full release lifecycle — fully plugin-based, monorepo-ready and language-agnostic.

Supply Chain Security
30+ Plugins
Monorepo Ready
Language Agnostic
OpenSSF Scorecard

Why semrel?

Release Automation at Enterprise Scale

Designed for Go and cloud-native environments — inspired by semantic-release, but built from the ground up.

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.

v0.5.0

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.

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

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 3 steps

Alpha phase — recommended to test with --dry-run before going live.

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

# Install plugins as needed
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

plugins:
  - uses: conventional    # Commit analysis
  - uses: changelog-md    # Generate CHANGELOG.md
  - uses: github          # Create GitHub release
  - uses: npm             # Bump package.json
  - uses: slack           # Notify team
    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 is in active development. Every milestone can be followed on GitHub.

  1. v0.1.0 Foundation shipped

    CLI, SemVer engine, Conventional Commits, Git tag management, dry-run

  2. v0.2.0 Plugin System shipped

    Stable core/plugin boundary, subprocess-based plugin execution model

  3. v0.3.0 CI Integration shipped

    GitHub Actions native, JSON output, end-to-end tests

  4. v0.4.0 Ecosystem Plugins shipped

    GitHub, GitLab, Gitea, Bitbucket, npm, Docker, Helm, Cargo, Python, Gradle, Maven and more.

  5. v0.5.0 Monorepo & Advanced in progress

    Changelog engine, workspace discovery, independent versioning, dependency graph, pre-release channels — currently active

  6. v1.0.0 Stable Release planned

    Production-ready, complete documentation, plugin SDK for third-party plugins

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 support (v0.5.0)

The next major milestone: workspace discovery, independent versioning, dependency graph. Ideal for Go developers with large repositories.

Roadmap v0.5.0

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.