Ultralytics YOLO27:

Integración continua (CI)#

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

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.
  • Despliegue con Docker: Esta prueba comprueba el despliegue del proyecto mediante Docker para garantizar que el Dockerfile y los scripts relacionados funcionan correctamente.
  • Enlaces rotos: Esta prueba examina el código 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 para ayudar a encontrar posibles vulnerabilidades de seguridad y mantener un código de alta calidad.
  • Publicación en PyPI: Esta prueba comprueba 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:

RepositorioCIDespliegue con DockerEnlaces rotosCodeQLPublicación en PyPI y de la documentación
yolov3CI de YOLOv3Publicar imágenes de DockerComprobar enlaces rotosCodeQL
yolov5CI de YOLOv5Publicar imágenes de DockerComprobar enlaces rotosCodeQL
ultralyticsCI de ultralyticsPublicar imágenes de DockerComprobar enlaces rotosCodeQLPublicar en PyPI y desplegar la documentación Compilaciones de Conda
sdkCI del SDKPublicar en PyPI
yolo-ios-appCI de la aplicación iOSCodeQLPublicar la aplicación iOS
yolo-flutter-appCI de la aplicación FlutterCodeQLPublicar en pub.dev
thopAcciones de UltralyticsCodeQLPublicar en PyPI
actionsCI de ActionsCodeQLPublicar en PyPI
mkdocsAcciones de UltralyticsCodeQLPublicar en PyPI
docsAcciones de UltralyticsComprobar enlaces rotos
handbookAcciones de UltralyticsComprobar enlaces rotos
starsAcciones de UltralyticsActualizar análisis
CLIPCI de CLIP

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á el estado «fallando» y, si se supera, mostrará el estado «correcto».

Si ves que una prueba falla, sería de gran ayuda que lo notificases mediante una incidencia de GitHub en el repositorio correspondiente.

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

Cobertura del código#

La cobertura del código es una métrica que representa el porcentaje del código que se ejecuta cuando se ejecutan las pruebas. Ofrece información sobre hasta qué punto las pruebas ejercitan el código y puede ser crucial para identificar partes de la aplicación que no se han probado. Un porcentaje alto de cobertura del código suele asociarse a una menor probabilidad de errores. Sin embargo, es esencial entender que la cobertura del código no garantiza la ausencia de defectos. Solo indica qué partes del código han ejecutado las pruebas.

Integración con codecov.io#

En Ultralytics, hemos integrado nuestros repositorios con codecov.io, una popular plataforma en línea para medir y visualizar la cobertura del código. Codecov proporciona información detallada, comparaciones de cobertura entre commits y superposiciones visuales directamente en el código, que indican qué líneas se han cubierto.

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

Resultados de cobertura#

Para obtener rápidamente una visión general del estado de la cobertura del código de nuestros repositorios, hemos incluido insignias de Codecov y vistas previas de tipo sunburst para cada proyecto supervisado. El círculo más interior de cada sunburst representa el proyecto completo; al alejarse del centro aparecen primero las carpetas y, finalmente, un único archivo. El tamaño y el color de cada segmento representan, respectivamente, el número de instrucciones y la cobertura. Para consultar todos los detalles, visita la organización de Ultralytics en Codecov.

Preguntas frecuentes#

  • La integración continua (CI) en Ultralytics consiste en integrar y probar automáticamente los cambios de código para garantizar unos 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 el despliegue con Docker, comprobaciones de enlaces rotos, análisis de CodeQL para detectar vulnerabilidades de seguridad y publicación en PyPI para empaquetar y distribuir nuestro software.

  • Ultralytics utiliza una acción de CI específica para comprobar si hay enlaces rotos en nuestros archivos Markdown y HTML. Esto ayuda a mantener la integridad de nuestra documentación al examinar e identificar enlaces inactivos o rotos, garantizando que los usuarios siempre tengan acceso a recursos precisos y disponibles.

  • El análisis de CodeQL es crucial para Ultralytics, ya que realiza un análisis semántico del código para encontrar posibles vulnerabilidades de seguridad y mantener unos estándares de alta calidad. Con CodeQL, podemos identificar y mitigar de forma proactiva los riesgos del código, lo que nos ayuda a ofrecer soluciones de software sólidas y seguras.

  • Ultralytics utiliza Docker para validar el despliegue de nuestros proyectos mediante una acción de CI específica. Este proceso garantiza que el Dockerfile y los scripts asociados funcionan correctamente, lo que permite disponer de entornos de despliegue coherentes y reproducibles, fundamentales para unas soluciones de IA escalables y fiables.

  • 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, ya que permite a los usuarios instalar y utilizar fácilmente nuestras herramientas mediante el Índice de paquetes de Python (PyPI).

  • Ultralytics mide la cobertura del código mediante la integración con Codecov, que proporciona información sobre qué parte del código se ejecuta durante las pruebas. Una cobertura alta puede indicar que el código se ha probado correctamente y ayudar a descubrir áreas no probadas que podrían ser propensas a errores. Puedes consultar métricas detalladas de cobertura del código en las insignias que se muestran en nuestros repositorios principales o directamente en Codecov.

Comentarios