
Actualmente, me estoy enfocando ampliamente en la Integración y el Despliegue Continuos (CI/CD) dentro del contexto de la integración. Mi objetivo final es no solo garantizar la seguridad de mis procesos de integración durante el desarrollo y la implementación, sino también automatizar el proceso utilizando un conjunto de reglas adecuado.
En este contexto, me encontré con la publicación de blog de Vadim Klimov titulada «Cumplimiento del cumplimiento de una guía de estilo», que me inspiró a profundizar en el tema del linting de API.
https://blogs.sap.com/2022/10/18/api-contract-enforcement-of-compliance-with-a-style-guide/
Llegué a reconocer la importancia de usar herramientas de linting de API y adherirme a las guías de estilo. En consecuencia, decidí incorporar Spectral en mi canalización de DevOps para garantizar que mis API cumplan con los estándares requeridos.
Spectral es una herramienta valiosa para el mantenimiento de las API, ya que realiza el linting de las API comparando las especificaciones con un conjunto personalizado de reglas y asegurándose de que cumplan con las estructuras definidas. Proporciona una gama de reglas de lint integradas, que cubren una amplia gama de posibles problemas con la especificación de su API. También le permite escribir sus propias reglas personalizadas, lo que lo hace altamente personalizable. Al integrar Spectral en mi proceso de creación e implementación, pude analizar los resultados y realizar mejoras en mis API para garantizar que cumplieran con los estándares deseados. Para probar esta integración, creé un archivo YAML de ejemplo simple para establecer una canalización. El código de este archivo YAML es el siguiente:
trigger:
- master
variables:
CONFIG_PATH: '$(Build.SourcesDirectory)/spectral.yaml'
steps:
- script: |
npx @stoplight/spectral-cli lint "$(Build.SourcesDirectory)/SBU/spectral.yml" -r $CONFIG_PATH -o "$(Build.SourcesDirectory)/test-results/spectral-results.xml" -f junit
displayName: 'Spectral Linting'
continueOnError: false
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '$(Build.SourcesDirectory)/test-results/spectral-results.xml'
failTaskOnFailedTests: true
testRunTitle: 'Spectral Linting Results'
displayName: 'Publish Spectral Test Results'
El activador «maestro» indica que la canalización se activa cuando se realizan cambios en la rama maestra del repositorio. La canalización contiene una variable CONFIG_PATH que contiene la ruta al archivo de configuración de Spectral. En el primer paso, se ejecuta el script npx @stoplight/spectral-cli lint para comprobar la especificación de la API. Se hace referencia al archivo de configuración a través de la variable CONFIG_PATH, y los resultados de la verificación se guardan en formato JUnit en el archivo spectral-results.xml. Si se producen errores durante la comprobación, la tarea marcará la canalización como fallida.
Una vez que mi tubería se haya completado con éxito, se mostrará el siguiente resultado:
La imagen muestra una ejecución de canalización que se realizó correctamente.
La canalización se ejecutó correctamente y un proceso posterior ahora podría implementar la API.
En caso de error, se mostraría lo siguiente:
La imagen muestra una ejecución de canalización que encontró errores.
Esta imagen muestra los resultados de pelusa junto con un archivo adjunto XML.
Mi canalización ha fallado y está registrado en mi informe de ejecución de prueba. Spectral ha determinado la causa exacta para mí y la ha guardado en un archivo separado. Además de poder monitorear la calidad del desarrollo, también puedo asegurarme de que las API se implementen solo si cumplen con mi conjunto de reglas definido.
La integración de Spectral en mi proceso de DevOps mejoró la calidad y el cumplimiento de los estándares de mis API. Fomentar la adopción de herramientas de linting de API como Spectral en las prácticas de DevOps es crucial para garantizar API estandarizadas y de alta calidad. Además, alivia la necesidad de garantizar que cada desarrollador haya configurado los requisitos previos requeridos localmente y me permite hacer cumplir mi conjunto de reglas de manera segura a través de la canalización.
¿Qué medidas ha tomado hasta ahora para garantizar la calidad del desarrollo de su API?
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073