Link to this sectionIntegració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 detectando problemas de forma frecuente y temprana en el proceso de desarrollo. En Ultralytics, utilizamos varias pruebas de CI para garantizar la calidad y la integridad de nuestro código base.
Link to this sectionAcciones de CI#
Aquí tienes una breve descripción de nuestras acciones de CI:
- CI: Esta es nuestra prueba de CI principal, que implica ejecutar pruebas unitarias, comprobaciones de linting y, a veces, pruebas más exhaustivas dependiendo del repositorio.
- Despliegue de Docker: Esta prueba comprueba el despliegue del proyecto usando Docker para asegurar que el Dockerfile y los scripts relacionados funcionan correctamente.
- Enlaces rotos: Esta prueba analiza el código base en busca de enlaces rotos o inexistentes en nuestros archivos markdown o HTML.
- CodeQL: CodeQL es una herramienta de GitHub que realiza análisis semántico en 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 comprueba si el proyecto puede ser empaquetado y publicado en PyPI sin errores.
Link to this sectionResultados de CI#
A continuación se muestra la tabla con el estado de estas pruebas de CI para nuestros repositorios principales:
| Repositorio | CI | Despliegue de Docker | Enlaces rotos | CodeQL | Publicación en PyPI y Docs |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| yolo-ios-app (App Store) | |||||
| yolo-flutter-app | |||||
| hub | |||||
| hub-sdk | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| 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á un estado de "failing" (fallo), y si se aprueba, mostrará un estado de "passing" (aprobado).
Si notas que una prueba falla, sería de gran ayuda si pudieras informarlo a través de un issue de GitHub en el repositorio respectivo.
Recuerda que una prueba de CI exitosa no significa que todo sea perfecto. Siempre se recomienda revisar manualmente el código antes del despliegue o de fusionar cambios.
Link to this sectionCobertura 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 alto porcentaje de cobertura de código suele asociarse con una menor probabilidad de errores. Sin embargo, es esencial entender 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.
Link to this sectionIntegració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 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 enfocándonos en áreas que podrían ser propensas a errores o que necesiten más pruebas.
Link to this sectionResultados de cobertura#
Para obtener rápidamente un vistazo al estado de la cobertura de código del paquete de Python ultralytics, hemos incluido una insignia y un gráfico circular (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 de un vistazo de nuestros esfuerzos de prueba. Para obtener todos los detalles, visita el informe de Codecov de Ultralytics.
| Repositorio | Cobertura de código |
|---|---|
| ultralytics |
En el gráfico sunburst a continuación, el círculo más interno es el proyecto completo, moviéndose desde el centro hacia afuera están las carpetas y, finalmente, un solo archivo. El tamaño y el color de cada porción representan el número de sentencias y la cobertura, respectivamente.
Link to this sectionFAQ#
Link to this section¿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 despliegue de 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.
Link to this section¿Cómo comprueba Ultralytics si hay enlaces rotos en la documentación y el código?#
Ultralytics utiliza una acción de CI específica para comprobar enlaces rotos dentro de nuestros archivos markdown y HTML. Esto ayuda a mantener la integridad de nuestra documentación escaneando e identificando enlaces muertos o rotos, asegurando que los usuarios siempre tengan acceso a recursos precisos y activos.
Link to this section¿Por qué es importante el análisis de CodeQL para el código base de Ultralytics?#
El análisis de CodeQL es crucial para Ultralytics, ya que realiza un análisis semántico de código para encontrar posibles vulnerabilidades de seguridad y mantener estándares de alta calidad. Con CodeQL, podemos identificar y mitigar riesgos en nuestro código de forma proactiva, ayudándonos a ofrecer soluciones de software robustas y seguras.
Link to this section¿Cómo utiliza Ultralytics Docker para el despliegue?#
Ultralytics emplea Docker para validar el despliegue de nuestros proyectos a través de una acción de CI dedicada. Este proceso asegura que nuestro Dockerfile y los scripts asociados funcionen correctamente, permitiendo entornos de despliegue consistentes y reproducibles que son críticos para soluciones de IA escalables y fiables.
Link to this section¿Cuál es el papel de la publicación automatizada en PyPI en Ultralytics?#
La publicación automatizada en PyPI asegura que nuestros proyectos puedan ser empaquetados y publicados 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).
Link to this section¿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, proporcionando 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, ayudando a descubrir áreas no probadas que podrían ser propensas a errores. Las métricas detalladas de cobertura de código pueden explorarse mediante insignias mostradas en nuestros repositorios principales o directamente en Codecov.