Zum Inhalt springen

CLI-Referenz

Diese Flags gelten für jeden semrel-Befehl.

FlagStandardBeschreibung
--configAuto-ErkennungPfad zur Konfigurationsdatei (.semrel.yaml, .semrel.yml, .semrel.toml, .semrel.json)
--dry-runfalseSimulation ohne Änderungen
--env-file.envPfad zur .env-Datei, die vor dem Ausführen geladen wird
--no-colorfalseFarbausgabe im Terminal deaktivieren
-o, --outputtextAusgabeformat: text oder json
-v, --versionVersion ausgeben und beenden

Führe die vollständige Release Pipeline aus.

Terminal-Fenster
semrel release [flags]
  1. .semrel.yaml laden und validieren
  2. condition-phase Plugins ausführen — bei Fehler abbrechen
  3. Prüfen, ob der aktuelle Branch für Releases konfiguriert ist
  4. Den letzten git-Tag finden und Commits seitdem sammeln
  5. Commits anhand der Regeln von Conventional Commits parsen
  6. Die nächste SemVer-Version berechnen (major / minor / patch)
  7. Changelog und Release Notes erzeugen
  8. pre-tag Plugins ausführen (z. B. Versionsdatei-Updater)
  9. CHANGELOG.md committen (außer bei commit_changelog: false)
  10. Den git-Tag erstellen und pushen
  11. release-phase Plugins ausführen (Packager, Publisher, Provider, Hooks)
FlagBeschreibung
--dry-runRelease ohne Änderungen vorschauen
--editErzeugte Release Notes vor dem Tagging in $EDITOR öffnen
--interactiveVor dem Tagging auf Bestätigung warten (benötigt ein TTY)
--force-bump-patch-versionEin Patch-Release erzwingen, auch wenn keine releasbaren Commits gefunden wurden
--github-outputRelease-Metadaten nach $GITHUB_OUTPUT schreiben (GitHub Actions)
--gitlab-dotenv <file>Release-Metadaten als dotenv-Artefakt schreiben (GitLab CI)
--output-file <file>Release-Metadaten in eine Datei schreiben (.json oder .env)

Hinweis: Plugin-Fehler im Modus --dry-run werden als Warnungen behandelt und lassen den Befehl nicht fehlschlagen. So kannst du eine Release-Version auch ohne vollständig konfigurierte Zugangsdaten vorschauen.

Terminal-Fenster
# Preview without making changes
semrel release --dry-run
# Edit release notes before tagging
semrel release --edit
# Force a patch bump
semrel release --force-bump-patch-version
# Export metadata for GitHub Actions
semrel release --github-output
# Use a non-default config file
semrel release --config .github/semrel.yaml

Erzeuge einen Changelog aus unreleasten Commits, ohne einen Release-Tag zu erstellen.

Terminal-Fenster
semrel changelog [flags]
FlagBeschreibung
--writeDen erzeugten Eintrag am Anfang von CHANGELOG.md einfügen
--since <ref>Statt des letzten Tags bei diesem Tag oder Ref starten
Terminal-Fenster
# Preview unreleased changes on stdout
semrel changelog
# Prepend to CHANGELOG.md
semrel changelog --write
# Start from a specific tag
semrel changelog --since v1.0.0
# Machine-readable output
semrel changelog --output json
CodeBedeutung
0Unreleaste releasbare Commits gefunden
2Nichts zu releasen (keine releasbaren Commits)

Validiere alle Commit-Messages seit dem letzten Release-Tag anhand von Conventional Commits.

Terminal-Fenster
semrel lint [flags]
Terminal-Fenster
semrel lint
semrel lint --output json
CodeBedeutung
0Alle Commits sind gültig
1Ein oder mehrere Commits sind ungültig

Validiere Commit-Messages anhand von Conventional Commits.

Ohne Argumente lintet der Befehl alle Commits seit dem letzten Release-Tag — derselbe Scope wie semrel lint, aber mit Details pro Commit.

Terminal-Fenster
semrel commitlint [message...] [flags]
FlagBeschreibung
--from <ref>Start-Ref (exklusiv) für einen Commit-Bereich
--to <ref>End-Ref (inklusiv) für einen Commit-Bereich (Standard: HEAD)
--stdinEine einzelne Commit-Message von stdin lesen
Terminal-Fenster
# Lint commits since last release tag (default)
semrel commitlint
# Lint a single message
semrel commitlint "feat(auth): add OAuth2 support"
# Lint a commit range
semrel commitlint --from HEAD~5 --to HEAD
# Lint from stdin (useful as a git commit-msg hook)
echo "fix: typo" | semrel commitlint --stdin
# Machine-readable output
semrel commitlint --output json

Führe Pre-Flight-Checks vor einem Release aus.

Checks:

  • .semrel.yaml existiert und ist gültig
  • Jede konfigurierte Plugin-Binärdatei ist auffindbar
  • Erforderliche Umgebungsvariablen sind gesetzt (soweit erkennbar)
  • Der aktuelle Branch ist ein konfigurierter Release-Branch
  • Ein git-Repository mit mindestens einem Tag ist vorhanden

Für GitLab akzeptiert semrel doctor SEMREL_PLUGIN_TOKEN, GITLAB_TOKEN oder CI_JOB_TOKEN als gültige Token-Quellen.

Terminal-Fenster
semrel doctor [flags]
FlagBeschreibung
--onlineZusätzlicher Ping an die semrel Registry, um Plugin-Verfügbarkeit zu prüfen
Terminal-Fenster
semrel doctor
semrel doctor --online
semrel doctor --output json
CodeBedeutung
0Alle Checks bestanden (Warnungen beeinflussen den Exit-Code nicht)
1Ein oder mehrere Checks sind fehlgeschlagen

Verwalte die semrel-Konfigurationsdatei.

Terminal-Fenster
semrel config <subcommand> [flags]

Erstelle eine neue .semrel.yaml interaktiv oder mit Standardwerten.

Terminal-Fenster
semrel config init [flags]
FlagBeschreibung
--no-interactivePrompts überspringen und eine minimale Standardkonfiguration schreiben
--forceEine vorhandene Konfigurationsdatei überschreiben
Terminal-Fenster
semrel config init
semrel config init --no-interactive
semrel config init --force

Die aufgelöste Konfiguration ausgeben.

Terminal-Fenster
semrel config show
semrel config show --output json

Die aktuelle Konfigurationsdatei validieren.

Terminal-Fenster
semrel config validate

Einen einzelnen Konfigurationsschlüssel in .semrel.yaml aktualisieren.

Terminal-Fenster
semrel config set <key> <value>
Terminal-Fenster
semrel config set tagPrefix v
semrel config set version_ceiling 2.0.0
semrel config set commit_changelog false
semrel config set tag_exists_strategy skip

.semrel.yaml von einer älteren Schema-Version auf die aktuelle aktualisieren.

Terminal-Fenster
semrel migrate [flags]
FlagBeschreibung
--dry-runAusstehende Migrationen anzeigen, ohne Dateien zu schreiben
--no-backupKein Backup mit Zeitstempel vor der Migration schreiben
Terminal-Fenster
semrel migrate
semrel migrate --dry-run
semrel migrate --no-backup

Verwalte semrel-Plugins.

Terminal-Fenster
semrel plugin <subcommand>

Alle verfügbaren Plugins in der Registry auflisten.

Terminal-Fenster
semrel plugin list [--no-header]

Plugins nach Namen, Beschreibung oder Tag durchsuchen.

Terminal-Fenster
semrel plugin search <query>
Terminal-Fenster
semrel plugin search github
semrel plugin search changelog

Lade eine Plugin-Binärdatei herunter und installiere sie nach .semrel/plugins/.

Terminal-Fenster
semrel plugin install <name[@version]> [--plugin-dir <dir>]
Terminal-Fenster
# Die neueste Version installieren
semrel plugin install @semrel/provider-github
# Eine bestimmte Version installieren
semrel plugin install @semrel/provider-github@1.2.0
# In ein benutzerdefiniertes Verzeichnis installieren
semrel plugin install @semrel/provider-github --plugin-dir ~/.semrel/plugins

Verwende die vollständige Referenz @namespace/name, wenn der Registry-Eintrag zu einem Namespace gehört. Nackte Namen wie github funktionieren nur für Plugins ohne Namespace in der Registry.

Wenn du in das projektlokale Standardverzeichnis installierst, erzeugt oder aktualisiert semrel außerdem .semrel.lock im Repository-Root.

Prüfe auf neuere Plugin-Releases in der Registry und installiere sie optional.

Ohne Argumente liest semrel .semrel.lock und prüft oder aktualisiert alle gepinnten Plugins.

Terminal-Fenster
semrel plugin update [name[@version]] [--check]
Terminal-Fenster
# Updates für alle in .semrel.lock gepinnten Plugins prüfen
semrel plugin update --check
# Alle verfügbaren Updates installieren und .semrel.lock aktualisieren
semrel plugin update
# Einzelnes Plugin aktualisieren
semrel plugin update @semrel/provider-github

Installiere alle in .semrel.lock aufgeführten Plugins nach .semrel/plugins/.

Terminal-Fenster
semrel plugin restore

Der Restore-Befehl überspringt bereits vorhandene Binärdateien und verifiziert vor der Installation eines fehlenden Plugins die Prüfsumme für die aktuelle Plattform.

- name: Restore semrel plugins
run: semrel plugin restore

Prüfe, ob es ein neueres semrel-Release gibt, und installiere es direkt an Ort und Stelle.

Holt das neueste Release von GitHub Releases und ersetzt die aktuelle Executable.

Terminal-Fenster
semrel update [flags]
FlagBeschreibung
--checkNur auf eine neuere Version prüfen; nichts herunterladen
Terminal-Fenster
# Check and install the latest release
semrel update
# Check only — no download
semrel update --check

Alle Packages eines Monorepo-Workspace mit einem einzigen Befehl releasen. Den Workspace in der Root-.semrel.yaml konfigurieren — vollständige Details im Monorepo-Guide.

Terminal-Fenster
semrel workspace <subbefehl>

Alle im Workspace konfigurierten Packages auflisten.

Terminal-Fenster
semrel workspace list

Alle Workspace-Packages in Abhängigkeitsreihenfolge releasen. Packages ohne neue Commits seit dem letzten Tag werden automatisch übersprungen.

Terminal-Fenster
semrel workspace release [flags]
FlagBeschreibung
--dry-runAlle Package-Releases vorschauen, ohne Änderungen vorzunehmen
--parallelUnabhängige Packages gleichzeitig releasen (Subprocess je Package)
--fail-fastBeim ersten Fehler stoppen, statt alle Fehler zu sammeln
Terminal-Fenster
# Gesamten Workspace-Release vorschauen
semrel workspace release --dry-run
# Alle Packages sequentiell releasen
semrel workspace release
# Unabhängige Packages parallel releasen
semrel workspace release --parallel
[packages/api] ✓ released
[packages/ui] – skipped (nothing to release)
[packages/worker] ✗ failed: …