- Inicio
- F5 XC API Specs
- Guía de Desarrollo
Guía de Desarrollo
Configuración
Sección titulada «Configuración»# Clonar e instalar dependencias de desarrollogit clone https://github.com/f5-sales-demo/api-specs.gitcd api-specsmake dev-install
# Instalar Spectral CLI (requerido para las etapas de linting)npm install -g @stoplight/spectral-climake dev-install crea un virtualenv en .venv/ e instala el proyecto con extras de desarrollo (pytest, ruff, mypy).
Variables de Entorno
Sección titulada «Variables de Entorno»La validación en vivo de la API requiere:
export F5XC_API_URL="https://example-tenant.console.ves.volterra.io"export F5XC_API_TOKEN="your-api-token"Sin estas variables, make validate recurre al modo de ejecución en seco (dry-run).
Ejecución del Pipeline
Sección titulada «Ejecución del Pipeline»Pipeline Completo
Sección titulada «Pipeline Completo»make all# Ejecuta: download → validate → spectral-lint → reconcile → spectral-gate → releaseEtapas Individuales
Sección titulada «Etapas Individuales»make download # Obtener specs del origenmake validate # Ejecutar pruebas en vivo de la API (requiere token de API)make validate-dry # Ejecución en seco (sin llamadas a la API)make spectral-lint # Modo de descubrimiento de Spectral sobre specs originalesmake reconcile # Aplicar correcciones de ambos informesmake spectral-gate # Puerta de calidad de Spectral sobre specs reconciliadasmake release # Construir paquete de lanzamientoDocumentación
Sección titulada «Documentación»make docs-generate # Regenerar docs/01-validation-report.mdx desde informesmake docs # Construir sitio de documentación completomake docs-serve # Servidor de desarrollo local con recarga en calienteEjecución de Pruebas
Sección titulada «Ejecución de Pruebas»make test # pytest con coberturamake lint # ruff check + verificación de formatomake typecheck # Verificación de tipos con mypymake ci-test # Los tres (usado en CI)Los hooks de pre-commit se ejecutan automáticamente al hacer commit si están instalados:
make pre-commit-install # Instalar hooks de gitmake pre-commit # Ejecutar todos los hooks manualmenteEstructura del Proyecto
Sección titulada «Estructura del Proyecto»scripts/ download.py # Etapa 1: Obtener specs de F5 validate.py # Etapa 2: Pruebas en vivo de la API spectral_lint.py # Etapa 3/5: Adaptador de linting de Spectral reconcile.py # Etapa 4: Aplicar correcciones a specs release.py # Etapa 6: Empaquetar lanzamiento generate_docs.py # Generar MDX desde informes utils/ auth.py # Autenticación de API F5 XC constraint_validator.py # Pruebas de restricciones + tipos de Discrepancia report_generator.py # Formato de informes schemathesis_runner.py # Orquestación de pruebas Schemathesis spec_loader.py # E/S de Specs + formato JSON
config/ validation.yaml # Configuración del pipeline endpoints.yaml # Endpoints base para pruebas en vivo
spectral/ functions/ f5-path-params.js # Función personalizada de Spectral
docs/ # Documentación MDX de Starlighttests/ # Suite de pruebas pytestrelease/specs/ # Salida: archivos de specs reconciliadasreports/ # Salida: informes de validación y SpectralAgregar un Nuevo Método de Corrección
Sección titulada «Agregar un Nuevo Método de Corrección»Para agregar una nueva corrección automática de Spectral al reconciliador:
-
Agregar la regla a
.spectral.yamlcon la severidad deseada. -
Habilitar la corrección automática en
config/validation.yamlbajospectral.auto_fix:spectral:auto_fix:your-new-rule: true -
Agregar el método de corrección a
SpecReconcilerenscripts/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 en el despachador
_apply_spectral_fix:spectral_fixers = {# ... existing fixers ..."spectral:your-new-rule": self._fix_your_rule,} -
Agregar pruebas que cubran el nuevo método de corrección.
Agregar una Nueva Regla de Spectral
Sección titulada «Agregar una Nueva Regla de Spectral»Para agregar una regla personalizada de Spectral con una función JavaScript:
-
Crear la función en
spectral/functions/your-rule.js. Exportar una función por defecto que reciba(targetVal, options, context)y devuelva un arreglo de objetos{message, path}. -
Registrarla en
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 de CI
Sección titulada «Pipeline de CI»El flujo de trabajo de GitHub Actions (validate-and-release.yml) se ejecuta en:
- Programación: Diariamente a las 6 AM UTC
- Push a main: Cuando cambian
scripts/,config/opyproject.toml - Despacho manual: Con opciones para lanzamiento forzado o ejecución en seco
El flujo de trabajo tiene cuatro jobs:
- validate — Descarga specs, ejecuta validación, lint de Spectral, reconciliación, puerta de Spectral
- check-release-needed — Compara hashes de contenido para decidir si un lanzamiento es necesario
- release — Empaqueta y crea un GitHub Release (solo si el contenido cambió)
- update-docs — Regenera
01-validation-report.mdxy abre un PR si hubo cambios
Un job notify crea un issue en GitHub si algún job falla.
Flujo de Trabajo de Ramas y PR
Sección titulada «Flujo de Trabajo de Ramas y PR»Todos los cambios siguen: Issue -> Rama -> PR -> CI pasa -> Merge.
- Nombres de ramas:
feature/<issue>-desc,fix/<issue>-desc,docs/<issue>-desc - Los PRs deben vincular un issue (
Closes #Nen la descripción) - Verificaciones de CI requeridas:
Check linked issuesyLint Code Base - Se prefiere squash merge; las ramas se eliminan automáticamente después del merge
Consulte CONTRIBUTING.md para las reglas completas del flujo de trabajo.