Integración continua (CI)#
La integración continua (CI) es un aspecto fundamental del desarrollo de software que consiste en integrar cambios y probarlos automáticamente. La CI nos permite mantener código de alta calidad al detectar problemas pronto y con frecuencia 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#
Esta es una breve descripción de nuestras acciones de CI:
- CI: es nuestra prueba principal de CI y ejecuta pruebas unitarias y, según el repositorio, pruebas más exhaustivas, como comprobaciones de exportación y pruebas de rendimiento.
- Despliegue de Docker: esta prueba comprueba el despliegue del proyecto con Docker para garantizar que el Dockerfile y los scripts relacionados funcionen correctamente.
- Enlaces rotos: esta prueba busca enlaces rotos o inactivos en los archivos Markdown o HTML de nuestro código.
- CodeQL: CodeQL es una herramienta de GitHub que analiza semánticamente nuestro código para ayudar a detectar posibles vulnerabilidades de seguridad y mantener una alta calidad.
- Publicación en PyPI: este flujo de trabajo compila el paquete y publica cada nueva versión en PyPI.
Resultados de CI#
A continuación se muestra una tabla con el estado de estas pruebas de CI en nuestros principales repositorios:
| Repositorio | CI | Despliegue de Docker | Enlaces rotos | CodeQL | Publicación en PyPI y de la documentación |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| sdk | |||||
| lite | |||||
| openapi | |||||
| habilidades | |||||
| yolo-ios-app | |||||
| yolo-flutter-app | |||||
| thop | |||||
| acciones | |||||
| mkdocs | |||||
| documentación | |||||
| manual | |||||
| estrellas | |||||
| 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 «fallido»; si se supera, mostrará el estado «superado».
Si detectas que una prueba falla, nos ayudarías mucho si lo notificas mediante una incidencia de GitHub en el repositorio correspondiente.
Recuerda que superar una prueba de CI no significa que todo sea perfecto. Siempre recomendamos revisar el código manualmente antes de implementarlo o fusionar cambios.
Cobertura del código#
La cobertura del código es una métrica que representa el porcentaje de tu base de código que se ejecuta al ejecutar las pruebas. Te permite saber hasta qué punto las pruebas ejercitan tu 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 fundamental 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 confirmaciones y superposiciones visuales directamente en el código que indican qué líneas se han cubierto.
Al integrar Codecov, nuestro objetivo es mantener y mejorar la calidad del código centrándonos en las áreas que pueden ser propensas a errores o necesitar más pruebas.
Resultados de cobertura#
Para consultar rápidamente el estado de la cobertura del código de nuestros repositorios, hemos incluido insignias de Codecov y vistas previas en gráfico de anillos para cada proyecto supervisado. El círculo más interno de cada gráfico representa el proyecto completo; al alejarse del centro aparecen las carpetas y, por último, 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.
| Repositorio | Cobertura del código | Gráfico de anillos |
|---|---|---|
| acciones | ||
| ultralytics | ||
| inference | ||
| yolo-flutter-app | ||
| yolo-ios-app | ||
| llm | ||
| profile | ||
| template | ||
| template-rust | ||
| replicate |
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 calidad elevados. Nuestra configuración de CI incluye la ejecución de pruebas unitarias, pruebas de exportación y evaluaciones comparativas. Además, realizamos el despliegue con Docker, comprobaciones de enlaces rotos, análisis de CodeQL para detectar vulnerabilidades de seguridad y la publicación en PyPI para empaquetar y distribuir nuestro software.
Ultralytics usa 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 la documentación, ya que analiza e identifica los enlaces inactivos o rotos y garantiza que los usuarios siempre puedan acceder a recursos precisos y disponibles.
El análisis de CodeQL es fundamental para Ultralytics, ya que realiza un análisis semántico del código para detectar posibles vulnerabilidades de seguridad y mantener unos estándares de calidad elevados. Con CodeQL, podemos identificar y mitigar riesgos en nuestro código de forma proactiva, lo que nos ayuda a ofrecer soluciones de software robustas y seguras.
Ultralytics utiliza Docker para validar el despliegue de nuestros proyectos mediante una acción de CI específica. Este proceso garantiza que nuestro Dockerfile y los scripts asociados funcionen correctamente y permite crear entornos de despliegue coherentes y reproducibles, fundamentales para ofrecer soluciones de IA fiables y escalables.
La publicación automatizada en PyPI compila nuestros paquetes y publica cada nueva versión sin necesidad de intervención manual. Este paso es esencial para distribuir los paquetes de Python de Ultralytics y permite a los usuarios instalar y utilizar fácilmente nuestras herramientas a través del Índice de paquetes de Python (PyPI).
Ultralytics mide la cobertura del código mediante la integración con Codecov, que permite saber qué parte de la base de código se ejecuta durante las pruebas. Una cobertura alta puede indicar que el código está bien probado y ayudar a descubrir áreas sin probar que podrían ser propensas a errores. Puedes consultar métricas detalladas de cobertura del código en las insignias que aparecen en nuestros repositorios principales o directamente en Codecov.