- Startseite
- F5 XC API Specs
- Entwicklungsleitfaden
Entwicklungsleitfaden
Einrichtung
Abschnitt betitelt „Einrichtung“# Repository klonen und Entwicklungsabhängigkeiten installierengit clone https://github.com/f5-sales-demo/api-specs.gitcd api-specsmake dev-install
# Spectral CLI installieren (erforderlich für Linting-Stufen)npm install -g @stoplight/spectral-climake dev-install erstellt eine virtuelle Umgebung in .venv/ und installiert das Projekt mit Entwicklungszusätzen (pytest, ruff, mypy).
Umgebungsvariablen
Abschnitt betitelt „Umgebungsvariablen“Für die Live-API-Validierung werden benötigt:
export F5XC_API_URL="https://example-tenant.console.ves.volterra.io"export F5XC_API_TOKEN="your-api-token"Ohne diese Variablen fällt make validate auf den Trockenlauf-Modus zurück.
Pipeline ausführen
Abschnitt betitelt „Pipeline ausführen“Vollständige Pipeline
Abschnitt betitelt „Vollständige Pipeline“make all# Führt aus: download → validate → spectral-lint → reconcile → spectral-gate → releaseEinzelne Stufen
Abschnitt betitelt „Einzelne Stufen“make download # Upstream-Spezifikationen abrufenmake validate # Live-API-Tests ausführen (API-Token erforderlich)make validate-dry # Trockenlauf (keine API-Aufrufe)make spectral-lint # Spectral Discovery-Modus auf Originalspezifikationenmake reconcile # Korrekturen aus beiden Berichten anwendenmake spectral-gate # Spectral Quality Gate auf abgeglichene Spezifikationenmake release # Release-Paket erstellenDokumentation
Abschnitt betitelt „Dokumentation“make docs-generate # docs/01-validation-report.mdx aus Berichten neu generierenmake docs # Vollständige Dokumentationsseite erstellenmake docs-serve # Lokaler Entwicklungsserver mit Hot ReloadTests ausführen
Abschnitt betitelt „Tests ausführen“make test # pytest mit Abdeckungmake lint # ruff check + Formatprüfungmake typecheck # mypy Typprüfungmake ci-test # Alle drei (wird in CI verwendet)Pre-Commit-Hooks werden automatisch beim Commit ausgeführt, wenn sie installiert sind:
make pre-commit-install # Git-Hooks installierenmake pre-commit # Alle Hooks manuell ausführenProjektstruktur
Abschnitt betitelt „Projektstruktur“scripts/ download.py # Stufe 1: Spezifikationen von F5 abrufen validate.py # Stufe 2: Live-API-Tests spectral_lint.py # Stufe 3/5: Spectral-Linting-Adapter reconcile.py # Stufe 4: Korrekturen auf Spezifikationen anwenden release.py # Stufe 6: Release paketieren generate_docs.py # MDX aus Berichten generieren utils/ auth.py # F5 XC API-Authentifizierung constraint_validator.py # Constraint-Tests + Diskrepanztypen report_generator.py # Berichtsformatierung schemathesis_runner.py # Schemathesis-Testorchestrierung spec_loader.py # Spezifikations-I/O + JSON-Formatierung
config/ validation.yaml # Pipeline-Konfiguration endpoints.yaml # Basis-Endpunkte für Live-Tests
spectral/ functions/ f5-path-params.js # Benutzerdefinierte Spectral-Funktion
docs/ # Starlight MDX-Dokumentationtests/ # pytest-Testsuiterelease/specs/ # Ausgabe: abgeglichene Spezifikationsdateienreports/ # Ausgabe: Validierungs- und Spectral-BerichteEine neue Fix-Methode hinzufügen
Abschnitt betitelt „Eine neue Fix-Methode hinzufügen“Um einen neuen automatischen Spectral-Fix zum Reconciler hinzuzufügen:
-
Regel hinzufügen in
.spectral.yamlmit dem gewünschten Schweregrad. -
Auto-Fix aktivieren in
config/validation.yamlunterspectral.auto_fix:spectral:auto_fix:your-new-rule: true -
Fixer-Methode hinzufügen zu
SpecReconcilerinscripts/reconcile.py:def _fix_your_rule(self, spec: dict, discrepancy: Discrepancy) -> dict | None:"""Fix description."""# Spezifikation direkt modifizieren# spec zurückgeben falls geändert, None falls keine Änderung nötigreturn spec -
Registrieren im
_apply_spectral_fix-Dispatcher:spectral_fixers = {# ... bestehende Fixer ..."spectral:your-new-rule": self._fix_your_rule,} -
Tests hinzufügen, die die neue Fix-Methode abdecken.
Eine neue Spectral-Regel hinzufügen
Abschnitt betitelt „Eine neue Spectral-Regel hinzufügen“Um eine benutzerdefinierte Spectral-Regel mit einer JavaScript-Funktion hinzuzufügen:
-
Erstellen Sie die Funktion in
spectral/functions/your-rule.js. Exportieren Sie eine Standardfunktion, die(targetVal, options, context)empfängt und ein Array von{message, path}-Objekten zurückgibt. -
Registrieren Sie sie in
spectral-pipeline.yaml:functions:- f5-path-params- your-rulerules:your-rule:description: "What it checks"message: "{{error}}"severity: errorgiven: "$.paths[*]"then:function: your-rule
CI-Pipeline
Abschnitt betitelt „CI-Pipeline“Der GitHub Actions Workflow (validate-and-release.yml) wird ausgeführt bei:
- Zeitplan: Täglich um 6 Uhr UTC
- Push auf main: Wenn sich
scripts/,config/oderpyproject.tomländern - Manueller Dispatch: Mit Optionen für erzwungenes Release oder Trockenlauf
Der Workflow hat vier Jobs:
- validate — Lädt Spezifikationen herunter, führt Validierung, Spectral-Lint, Abgleich und Spectral-Gate aus
- check-release-needed — Vergleicht Content-Hashes, um zu entscheiden, ob ein Release gerechtfertigt ist
- release — Paketiert und erstellt ein GitHub Release (nur wenn sich Inhalte geändert haben)
- update-docs — Regeneriert
01-validation-report.mdxund öffnet einen PR, falls Änderungen vorliegen
Ein notify-Job erstellt ein GitHub Issue, wenn ein Job fehlschlägt.
Branch- und PR-Workflow
Abschnitt betitelt „Branch- und PR-Workflow“Alle Änderungen folgen dem Schema: Issue -> Branch -> PR -> CI bestanden -> Merge.
- Branch-Namen:
feature/<issue>-desc,fix/<issue>-desc,docs/<issue>-desc - PRs müssen ein Issue verlinken (
Closes #Nin der Beschreibung) - Erforderliche CI-Checks:
Check linked issuesundLint Code Base - Squash-Merge bevorzugt; Branches werden nach dem Merge automatisch gelöscht
Siehe CONTRIBUTING.md für die vollständigen Workflow-Regeln.