Zum Inhalt springen

Plugin Overview

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

semrel’s release pipeline is composed of standalone plugin executables. Each plugin is discovered locally and executed as a subprocess — there is no gRPC layer or RPC handshake.

  1. semrel reads each plugin entry from .semrel.yaml.
  2. The uses: value normally resolves to a binary named semrel-plugin-<uses>.
  3. semrel looks for that binary at an explicit path:, then in ~/.semrel/plugins/, then in $PATH.
  4. Plugin args: values are exposed as environment variables in the form SEMREL_PLUGIN_<KEY>=<value>.
  5. Release context is also passed through environment variables so every plugin can read the same version, branch, tag, changelog, and dry-run state.
  6. semrel runs the executable and uses the process result to continue or stop the pipeline.

These environment variables are available to plugin processes during execution.

VariableDescription
SEMREL_VERSIONThe semrel CLI version
SEMREL_TAG_NAMEFull tag name for the release
SEMREL_CURRENT_VERSIONCurrent project version
SEMREL_NEXT_VERSIONNext version selected for the release
SEMREL_BUMPCalculated bump level
SEMREL_BRANCHCurrent git branch
SEMREL_TAG_PREFIXConfigured tag prefix
SEMREL_CHANGELOGGenerated changelog content
SEMREL_DRY_RUNWhether the current run is a dry run

The current official plugin catalog is organized into six categories.

Provider Plugin

Handles forge and git operations such as reading release history, creating tags, and publishing releases.

Condition Plugin

Verifies that the current environment is allowed to publish a release.

Analyzer Plugin

Inspects commits and decides the SemVer bump level.

Generator Plugin

Produces changelogs, release notes, and other release-facing content.

Updater Plugin

Updates versioned project files before the release is finalized.

Hook Plugin

Sends notifications or runs follow-up automation after success or failure.

Discover official plugins in the Plugin Registry or install them directly with semrel plugin install <name>.

semrel resolves plugins from the configured uses: value:

plugins:
- uses: github
name: github-release
args:
owner: MyOrg
repo: my-repo
- uses: slack-notify
path: /usr/local/bin/semrel-plugin-slack
args:
webhook_url: ${{ env.SLACK_WEBHOOK }}