- Home
- F5 XC API Specs
- Guida allo Sviluppo
Guida allo Sviluppo
Configurazione
Sezione intitolata “Configurazione”# Clonare e installare le dipendenze di sviluppogit clone https://github.com/f5-sales-demo/api-specs.gitcd api-specsmake dev-install
# Installare Spectral CLI (necessario per le fasi di linting)npm install -g @stoplight/spectral-climake dev-install crea un virtualenv in .venv/ e installa il progetto con gli extra di sviluppo (pytest, ruff, mypy).
Variabili d’Ambiente
Sezione intitolata “Variabili d’Ambiente”La validazione live delle API richiede:
export F5XC_API_URL="https://example-tenant.console.ves.volterra.io"export F5XC_API_TOKEN="your-api-token"Senza queste variabili, make validate ricorre alla modalità dry-run.
Esecuzione della Pipeline
Sezione intitolata “Esecuzione della Pipeline”Pipeline Completa
Sezione intitolata “Pipeline Completa”make all# Esegue: download → validate → spectral-lint → reconcile → spectral-gate → releaseFasi Individuali
Sezione intitolata “Fasi Individuali”make download # Scarica le specifiche upstreammake validate # Esegue test API live (richiede token API)make validate-dry # Esecuzione dry run (nessuna chiamata API)make spectral-lint # Modalità Spectral discover sulle specifiche originalimake reconcile # Applica le correzioni da entrambi i reportmake spectral-gate # Quality gate Spectral sulle specifiche riconciliatemake release # Costruisce il pacchetto di rilascioDocumentazione
Sezione intitolata “Documentazione”make docs-generate # Rigenera docs/01-validation-report.mdx dai reportmake docs # Costruisce il sito di documentazione completomake docs-serve # Server di sviluppo locale con hot reloadEsecuzione dei Test
Sezione intitolata “Esecuzione dei Test”make test # pytest con coperturamake lint # ruff check + verifica formattazionemake typecheck # Controllo dei tipi con mypymake ci-test # Tutti e tre (usato nella CI)Gli hook pre-commit vengono eseguiti automaticamente al commit se installati:
make pre-commit-install # Installa gli hook gitmake pre-commit # Esegue tutti gli hook manualmenteStruttura del Progetto
Sezione intitolata “Struttura del Progetto”scripts/ download.py # Fase 1: Scarica le specifiche da F5 validate.py # Fase 2: Test API live spectral_lint.py # Fase 3/5: Adattatore linting Spectral reconcile.py # Fase 4: Applica correzioni alle specifiche release.py # Fase 6: Creazione pacchetto di rilascio generate_docs.py # Genera MDX dai report utils/ auth.py # Autenticazione API F5 XC constraint_validator.py # Test dei vincoli + Tipi di discrepanza report_generator.py # Formattazione dei report schemathesis_runner.py # Orchestrazione test Schemathesis spec_loader.py # I/O specifiche + formattazione JSON
config/ validation.yaml # Configurazione della pipeline endpoints.yaml # Endpoint di base per i test live
spectral/ functions/ f5-path-params.js # Funzione Spectral personalizzata
docs/ # Documentazione MDX Starlighttests/ # Suite di test pytestrelease/specs/ # Output: file delle specifiche riconciliatereports/ # Output: report di validazione e SpectralAggiungere un Nuovo Metodo di Correzione
Sezione intitolata “Aggiungere un Nuovo Metodo di Correzione”Per aggiungere una nuova auto-correzione Spectral al riconciliatore:
-
Aggiungere la regola a
.spectral.yamlcon la severità desiderata. -
Abilitare l’auto-correzione in
config/validation.yamlsottospectral.auto_fix:spectral:auto_fix:your-new-rule: true -
Aggiungere il metodo di correzione a
SpecReconcilerinscripts/reconcile.py:def _fix_your_rule(self, spec: dict, discrepancy: Discrepancy) -> dict | None:"""Fix description."""# Modify spec in place# Return spec if changed, None if no change neededreturn spec -
Registrarlo nel dispatcher
_apply_spectral_fix:spectral_fixers = {# ... existing fixers ..."spectral:your-new-rule": self._fix_your_rule,} -
Aggiungere test che coprano il nuovo metodo di correzione.
Aggiungere una Nuova Regola Spectral
Sezione intitolata “Aggiungere una Nuova Regola Spectral”Per aggiungere una regola Spectral personalizzata con una funzione JavaScript:
-
Creare la funzione in
spectral/functions/your-rule.js. Esportare una funzione predefinita che riceve(targetVal, options, context)e restituisce un array di oggetti{message, path}. -
Registrarla 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
Pipeline CI
Sezione intitolata “Pipeline CI”Il workflow GitHub Actions (validate-and-release.yml) viene eseguito:
- Schedulazione: Giornalmente alle 6:00 UTC
- Push su main: Quando vengono modificati
scripts/,config/opyproject.toml - Dispatch manuale: Con opzioni per rilascio forzato o dry-run
Il workflow ha quattro job:
- validate — Scarica le specifiche, esegue validazione, Spectral lint, riconciliazione, Spectral gate
- check-release-needed — Confronta gli hash dei contenuti per decidere se un rilascio è necessario
- release — Crea il pacchetto e pubblica una GitHub Release (solo se il contenuto è cambiato)
- update-docs — Rigenera
01-validation-report.mdxe apre una PR se ci sono modifiche
Un job notify crea una issue su GitHub se un qualsiasi job fallisce.
Flusso di Lavoro Branch e PR
Sezione intitolata “Flusso di Lavoro Branch e PR”Tutte le modifiche seguono: Issue -> Branch -> PR -> CI superata -> Merge.
- Nomi dei branch:
feature/<issue>-desc,fix/<issue>-desc,docs/<issue>-desc - Le PR devono collegare una issue (
Closes #Nnella descrizione) - Controlli CI obbligatori:
Check linked issueseLint Code Base - Squash merge preferito; i branch vengono eliminati automaticamente dopo il merge
Consultare CONTRIBUTING.md per le regole complete del flusso di lavoro.