Integración continua (CI)

La integración continua (CI) es un aspecto esencial del desarrollo de software que implica integrar cambios y probarlos automáticamente. CI nos permite mantener un código de alta calidad al detectar problemas de manera temprana y frecuente durante el proceso de desarrollo. En Ultralytics, utilizamos diversas pruebas de CI para garantizar la calidad e integridad de nuestro código base.

Acciones de CI

Aquí tienes una breve descripción de nuestras acciones de CI:

  • CI: Esta es nuestra prueba de CI principal que incluye la ejecución de pruebas unitarias, comprobaciones de linting y, en ocasiones, pruebas más exhaustivas según el repositorio.
  • Implementación con Docker: Esta prueba verifica la implementación del proyecto utilizando Docker para garantizar que el Dockerfile y los scripts relacionados funcionen correctamente.
  • Enlaces rotos: Esta prueba escanea el código base en busca de enlaces rotos o inactivos en nuestros archivos markdown o HTML.
  • CodeQL: CodeQL es una herramienta de GitHub que realiza un análisis semántico de nuestro código, ayudando a encontrar posibles vulnerabilidades de seguridad y a mantener un código de alta calidad.
  • Publicación en PyPI: Esta prueba verifica si el proyecto se puede empaquetar y publicar en PyPI sin errores.

Resultados de CI

A continuación, se muestra la tabla con el estado de estas pruebas de CI para nuestros repositorios principales:

RepositorioCIImplementación con DockerEnlaces rotosCodeQLPublicación en PyPI y documentos
yolov3YOLOv3 CIPublicar imágenes de DockerComprobar enlaces rotosCodeQL
yolov5YOLOv5 CIPublicar imágenes de DockerComprobar enlaces rotosCodeQL
ultralyticsultralytics CIPublicar imágenes de DockerComprobar enlaces rotosCodeQLPublicar en PyPI y desplegar Docs Conda Builds
yolo-ios-app (App Store)iOS App CICodeQLPublicar aplicación iOS
yolo-flutter-appFlutter App CICodeQLPublicar en pub.dev
hubHUB CIComprobar enlaces rotos
hub-sdkHUB-SDK CIComprobar enlaces rotosCodeQLPublicar en PyPI
thopAcciones de UltralyticsCodeQLPublicar en PyPI
actionsActions CICodeQLPublicar en PyPI
mkdocsAcciones de UltralyticsCodeQLPublicar en PyPI
docsAcciones de UltralyticsComprobar enlaces rotosComprobar dominiospages-build-deployment
handbookAcciones de UltralyticsComprobar enlaces rotospages-build-deployment
starsAcciones de UltralyticsActualizar análisis
CLIPCLIP CI

Cada insignia muestra el estado de la última ejecución de la prueba de CI correspondiente en la rama main del repositorio respectivo. Si una prueba falla, la insignia mostrará un estado de "failing" (fallido), y si se supera, mostrará un estado de "passing" (superado).

Si observas que una prueba falla, sería de gran ayuda que lo informaras a través de un issue en GitHub en el repositorio correspondiente.

Recuerda que una prueba de CI exitosa no significa que todo sea perfecto. Siempre se recomienda revisar manualmente el código antes de la implementación o de fusionar cambios.

Cobertura de código

La cobertura de código es una métrica que representa el porcentaje de tu código base que se ejecuta cuando se realizan las pruebas. Proporciona información sobre qué tan bien tus pruebas ejercitan tu código y puede ser crucial para identificar partes no probadas de tu aplicación. Un porcentaje alto de cobertura de código a menudo se asocia con una menor probabilidad de errores. Sin embargo, es esencial comprender que la cobertura de código no garantiza la ausencia de defectos. Simplemente indica qué partes del código han sido ejecutadas por las pruebas.

Integración con codecov.io

En Ultralytics, hemos integrado nuestros repositorios con codecov.io, una plataforma en línea popular para medir y visualizar la cobertura de código. Codecov proporciona información detallada, comparaciones de cobertura entre commits y superposiciones visuales directamente en tu código, indicando qué líneas fueron cubiertas.

Al integrarnos con Codecov, nuestro objetivo es mantener y mejorar la calidad de nuestro código centrándonos en áreas que podrían ser propensas a errores o que necesitan más pruebas.

Resultados de cobertura

Para obtener un vistazo rápido del estado de cobertura de código del paquete de Python ultralytics, hemos incluido una insignia y un gráfico sunburst de los resultados de cobertura de ultralytics. Estas imágenes muestran el porcentaje de código cubierto por nuestras pruebas, ofreciendo una métrica inmediata de nuestros esfuerzos de prueba. Para obtener todos los detalles, visita el informe de Codecov de Ultralytics.

RepositorioCobertura de código
ultralyticscodecov

En el gráfico sunburst de abajo, el círculo más interno representa todo el proyecto, moviéndose desde el centro se encuentran las carpetas y, finalmente, un solo archivo. El tamaño y el color de cada sección representan la cantidad de sentencias y la cobertura, respectivamente.

Ultralytics Codecov Image

Preguntas frecuentes

¿Qué es la integración continua (CI) en Ultralytics?

La integración continua (CI) en Ultralytics implica integrar y probar automáticamente los cambios de código para garantizar estándares de alta calidad. Nuestra configuración de CI incluye la ejecución de pruebas unitarias, comprobaciones de linting y pruebas exhaustivas. Además, realizamos implementación con Docker, comprobaciones de enlaces rotos, análisis con CodeQL para detectar vulnerabilidades de seguridad y publicación en PyPI para empaquetar y distribuir nuestro software.

¿Cómo comprueba Ultralytics si hay enlaces rotos en la documentación y en el código?

Ultralytics utiliza una acción de CI específica para comprobar si hay enlaces rotos dentro de nuestros archivos markdown y HTML. Esto ayuda a mantener la integridad de nuestra documentación mediante el escaneo e identificación de enlaces inactivos o rotos, asegurando que los usuarios siempre tengan acceso a recursos precisos y actualizados.

¿Por qué es importante el análisis con CodeQL para el código base de Ultralytics?

El análisis con CodeQL es crucial para Ultralytics, ya que realiza un análisis semántico del código para encontrar posibles vulnerabilidades de seguridad y mantener estándares de alta calidad. Con CodeQL, podemos identificar y mitigar riesgos de forma proactiva en nuestro código, ayudándonos a ofrecer soluciones de software robustas y seguras.

¿Cómo utiliza Ultralytics Docker para la implementación?

Ultralytics emplea Docker para validar la implementación de nuestros proyectos a través de una acción de CI dedicada. Este proceso garantiza que nuestro Dockerfile y los scripts asociados funcionen correctamente, lo que permite entornos de implementación consistentes y reproducibles que son críticos para soluciones de IA escalables y fiables.

¿Cuál es el papel de la publicación automatizada en PyPI en Ultralytics?

La publicación automatizada en PyPI garantiza que nuestros proyectos se puedan empaquetar y publicar sin errores. Este paso es esencial para distribuir los paquetes de Python de Ultralytics, permitiendo a los usuarios instalar y utilizar nuestras herramientas fácilmente a través del Python Package Index (PyPI).

¿Cómo mide Ultralytics la cobertura de código y por qué es importante?

Ultralytics mide la cobertura de código integrándose con Codecov, lo que proporciona información sobre cuánto del código base se ejecuta durante las pruebas. Una alta cobertura de código puede indicar un código bien probado, lo que ayuda a descubrir áreas no probadas que podrían ser propensas a errores. Las métricas detalladas de cobertura de código se pueden explorar a través de insignias que se muestran en nuestros repositorios principales o directamente en Codecov.

Comentarios