Zum Inhalt springen

gRPC-API

Der Plugin-Vertrag von semrel ist in api/proto/v1/semantic_release.proto definiert. Alle Plugin-Typen implementieren einen oder mehrere der unten beschriebenen Services.

FeldTypBeschreibung
majoruint32Hauptversions-Komponente
minoruint32Nebenversion-Komponente
patchuint32Patch-Komponente
pre_releasestringPre-Release-Bezeichner, z. B. alpha.1, rc.2
build_metadatastringErstellungsmetadaten, z. B. 20240101
FeldTypBeschreibung
shastringVollständige Commit-SHA
raw_messagestringRohe Commit-Nachricht (Betreff + Text)
files_changed[]stringPfade der in diesem Commit geänderten Dateien
author_namestringAnzeigename des Commit-Autors
author_emailstringE-Mail-Adresse des Commit-Autors
timestampint64Unix-Zeitstempel (Sekunden)

Wird an jedes Plugin-RPC übergeben. Enthält alle Informationen, die ein Plugin braucht.

FeldTypBeschreibung
repo_ownerstringRepository-Eigentümer
repo_namestringRepository-Name
repo_urlstringKlon-URL
branchstringVeröffentlichte Branch
last_versionSemanticVersionZuletzt veröffentlichte Version (leer, wenn keine vorhanden ist)
next_versionSemanticVersionNächste berechnete Version
commits[]CommitCommits seit der letzten Release
dry_runboolWenn true, dürfen Plugins keine Seiteneffekte ausführen
configmap<string, string>Plugin-args aus .semrel.yaml

Kapselt Operationen auf VCS-Plattformen (GitHub, GitLab, Gitea, pures Git).

Gibt die zuletzt veröffentlichte Version und ihre Tag-SHA zurück.

rpc GetLastRelease(GetLastReleaseRequest) returns (GetLastReleaseResponse);
AntwortfeldTypBeschreibung
versionSemanticVersionLetzte Release. Leer, wenn keine frühere Release existiert
tag_shastringSHA des zugehörigen Git-Tag-Objekts

Gibt alle Commits zwischen einer gegebenen Ref und HEAD zurück.

rpc GetCommitsSince(GetCommitsSinceRequest) returns (GetCommitsSinceResponse);
AnfragefeldTypBeschreibung
ctxReleaseContextRelease-Kontext
since_shastringSHA, ab der gelistet wird (exklusiv)

Erstellt (oder aktualisiert) die VCS-Release und das Git-Tag für next_version.

rpc CreateRelease(CreateReleaseRequest) returns (CreateReleaseResponse);
AnfragefeldTypBeschreibung
ctxReleaseContextRelease-Kontext
changelogstringGerenderte Release Notes aus ChangelogGeneratorPlugin

Lädt ein Release-Artefakt in eine bestehende Release hoch.

rpc UploadAsset(UploadAssetRequest) returns (UploadAssetResponse);
AnfragefeldTypBeschreibung
release_idstringPlattformabhängige Release-Kennung aus CreateRelease
asset_pathstringAbsoluter Pfad im lokalen Dateisystem
asset_namestringAnzeigename / Dateiname in der Release
content_typestringMIME-Typ des Assets

Prüft, ob die Release in einer autorisierten CI-Umgebung läuft.

rpc VerifyConditions(VerifyConditionsRequest) returns (VerifyConditionsResponse);
AntwortfeldTypBeschreibung
error_messagestringNicht leer bedeutet Abbruch. Leer bedeutet OK
detailsstringLesbarer Hinweis zur Behebung

Analysiert Commits und bestimmt den erforderlichen SemVer-Bump.

WertBeschreibung
BUMP_LEVEL_NONEKeine Release erforderlich
BUMP_LEVEL_PATCHPatch-Erhöhung (z. B. 1.0.01.0.1)
BUMP_LEVEL_MINORMinor-Erhöhung (z. B. 1.0.01.1.0)
BUMP_LEVEL_MAJORMajor-Erhöhung (z. B. 1.0.02.0.0)
rpc AnalyzeCommits(AnalyzeCommitsRequest) returns (AnalyzeCommitsResponse);
AntwortfeldTypBeschreibung
bumpBumpLevelErforderlicher Versions-Bump
reasonstringLesbare Erklärung

Rendert Release Notes aus der Commit-Liste.

rpc GenerateNotes(GenerateNotesRequest) returns (GenerateNotesResponse);
AntwortfeldTypBeschreibung
notesstringGerendertes Changelog-Fragment (Markdown, RST usw.)

Schreibt die nächste Version in verfolgte Projektdateien, bevor der Release-Commit erstellt wird.

rpc UpdateFiles(UpdateFilesRequest) returns (UpdateFilesResponse);
AntwortfeldTypBeschreibung
updated_files[]stringPfade der geänderten Dateien
error_messagestringNicht leer zeigt einen Fehler an

Lebenszyklus-Callbacks für Benachrichtigungen.

Wird nach einer erfolgreichen Release aufgerufen.

rpc OnSuccess(OnSuccessRequest) returns (OnSuccessResponse);
AnfragefeldTypBeschreibung
ctxReleaseContextRelease-Kontext
release_urlstringURL der neu erstellten Release

Wird aufgerufen, wenn die Pipeline auf einen nicht behebbaren Fehler stößt.

rpc OnFail(OnFailRequest) returns (OnFailResponse);
AnfragefeldTypBeschreibung
ctxReleaseContextRelease-Kontext
error_messagestringFehler, der den Ausfall verursacht hat