JSON Schemas
semrel veröffentlicht versionierte JSON Schema-Dokumente sowohl für die zentrale .semrel.yaml-Konfiguration als auch für jedes registrierte Plugin. Jeder Editor, der yaml-language-server unterstützt, kann diese Schemas für Inline-Validierung und Autovervollständigung verwenden — ganz ohne zusätzliche Erweiterungen.
Schnellstart
Abschnitt betitelt „Schnellstart“Füge deiner .semrel.yaml einen einzigen Kommentar hinzu:
# yaml-language-server: $schema=https://registry.semrel.io/schemas/core/v1.jsonschemaVersion: 1tagPrefix: "v"
plugins: - uses: @semrel/analyzer-conventional - uses: @semrel/provider-github args: token: ${{ env.GITHUB_TOKEN }}Das ist alles. Dein Editor wird jetzt:
- Unbekannte Top-Level-Schlüssel markieren
- Vor fehlenden Pflichtfeldern warnen
- Autovervollständigung für
tagPrefix,branch,pluginsusw. anbieten
Editor-Setup
Abschnitt betitelt „Editor-Setup“Installiere die YAML extension by Red Hat. Der Kommentar # yaml-language-server: $schema=... wird automatisch erkannt — zusätzliche Einstellungen sind nicht nötig.
Alternativ kannst du in settings.json eine globale Zuordnung konfigurieren, damit das Schema für jede .semrel.yaml auch ohne Kommentar verwendet wird:
{ "yaml.schemas": { "https://registry.semrel.io/schemas/core/v1.json": [ ".semrel.yaml", ".semrel.yml" ] }}JetBrains IDEs (IntelliJ, GoLand, WebStorm usw.) unterstützen JSON-Schema-Mapping über Settings → Languages & Frameworks → Schemas and DTDs → JSON Schema Mappings.
Füge eine neue Zuordnung hinzu:
- Schema URL:
https://registry.semrel.io/schemas/core/v1.json - Dateimuster:
.semrel.yaml
Der Kommentar # yaml-language-server: wird in aktuellen Versionen ebenfalls erkannt.
Wenn yaml-language-server über nvim-lspconfig konfiguriert ist, füge das Schema-Mapping zu deinen LSP-Einstellungen hinzu:
require('lspconfig').yamlls.setup({ settings = { yaml = { schemas = { ["https://registry.semrel.io/schemas/core/v1.json"] = ".semrel.yaml", }, }, },})Plugin-Schemas
Abschnitt betitelt „Plugin-Schemas“Jedes offizielle Plugin hat ein veröffentlichtes JSON-Schema, das den args:-Block beschreibt. Einen yaml-language-server-Kommentar an der args:-Zeile ergänzen, um Inline-Validierung und Autovervollständigung zu aktivieren:
# yaml-language-server: $schema=https://registry.semrel.io/schemas/core/v1.jsonplugins: - uses: @semrel/provider-github # yaml-language-server: $schema=https://registry.semrel.io/schemas/plugins/github/latest.json args: token: ${{ env.GITHUB_TOKEN }} owner: MyOrg repo: my-repo assets: dist/*.tar.gz
- uses: @semrel/hook-slack # yaml-language-server: $schema=https://registry.semrel.io/schemas/plugins/slack/latest.json args: webhook_url: ${{ env.SLACK_WEBHOOK }} channel: "#releases"Referenz der Schema-URLs
Abschnitt betitelt „Referenz der Schema-URLs“| Ressource | URL |
|---|---|
| Core-Konfiguration | https://registry.semrel.io/schemas/core/v1.json |
| Plugin (Kurzname) | https://registry.semrel.io/schemas/plugins/{name}/v1.json |
| Neuestes Plugin-Schema | https://registry.semrel.io/schemas/plugins/{name}/latest.json |
Alle Schema-Endpunkte werden von GitHub Pages ohne HTTP-Redirect ausgeliefert. latest.json ist eine Kopie der aktuellen Version und wird bei neuen Plugin-Releases aktualisiert.
Selbst gehostete Registry
Abschnitt betitelt „Selbst gehostete Registry“Wenn du eine private semrel-registry-Instanz betreibst, ersetze die Basis-URL:
# yaml-language-server: $schema=https://my-registry.example.com/schemas/core/v1.jsonDie Registry liefert Schemas über den Pfad /schemas/ auf demselben Host wie die API aus.
CLI-Validierung
Abschnitt betitelt „CLI-Validierung“semrel kann deine Konfigurationsdatei gegen das veröffentlichte Schema validieren, ohne ein Release auszuführen:
semrel config validate# ✓ Config is valid (schema version 1)
semrel config validate --config path/to/.semrel.yamlWenn die Validierung fehlschlägt, wird ein Exit-Code ungleich null zurückgegeben. Das macht den Befehl gut geeignet für CI-Pre-Checks:
- name: Validate semrel config run: semrel config validateSchema-Versionierung
Abschnitt betitelt „Schema-Versionierung“Schemas folgen der SemVer-Major des semrel-Konfigurationsformats:
| Schema-Version | semrel-Version | Hinweise |
|---|---|---|
v1 | >= 1.0.0 | Erstes stabiles Schema |
Wenn eine Breaking-Change an der Konfiguration eingeführt wird, wird ein neues v2.json zusätzlich zu v1.json veröffentlicht. Der Redirect latest.json wird erst aktualisiert, wenn die neue Version stabil ist.
Verwende semrel migrate, um deine Konfigurationsdatei auf die aktuelle Schema-Version zu aktualisieren:
semrel migrate --dry-run # preview changessemrel migrate # apply in-place (creates .semrel.yaml.bak backup)Für Plugin-Autor:innen
Abschnitt betitelt „Für Plugin-Autor:innen“Wenn du ein semrel-Plugin pflegst, füge deinem Repository eine Datei schema/v1.json hinzu, die die SEMREL_PLUGIN_*-Umgebungsvariablen beschreibt, die dein Plugin akzeptiert:
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://registry.semrel.io/schemas/plugins/my-provider/v1.json", "title": "my-provider plugin schema", "type": "object", "properties": { "SEMREL_PLUGIN_TOKEN": { "type": "string", "description": "API token for the target platform." }, "SEMREL_PLUGIN_OWNER": { "type": "string", "description": "Repository owner / organisation." } }, "required": ["SEMREL_PLUGIN_TOKEN"]}Wenn dein Plugin in der semrel-registry registriert ist, wird das Schema automatisch unter /schemas/plugins/{name}/v1.json ausgeliefert.
Sieh im plugin development guide nach, wenn du eine vollständige Schritt-für-Schritt-Anleitung möchtest.