Integración Continua (CI)
La Integración Continua (CI) es un aspecto esencial del desarrollo de software que implica la integración de cambios y su prueba automática. La CI nos permite mantener un código de alta calidad al detectar problemas de forma temprana y frecuente en el proceso de desarrollo. En Ultralytics, utilizamos varias pruebas de CI para garantizar la calidad y la integridad de nuestra base de código.
Acciones de IC
Aquí tiene una breve descripción de nuestras acciones de CI:
- CI: Esta es nuestra prueba de CI principal que implica la ejecución de pruebas unitarias, comprobaciones de linting y, a veces, pruebas más exhaustivas según el repositorio.
- Implementación de 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 la base de código en busca de enlaces rotos o inactivos en nuestros archivos markdown o HTML.
- CodeQL: CodeQL es una herramienta de GitHub que realiza análisis semántico en nuestro código, lo que ayuda 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 se puede empaquetar y publicar en PyPi sin errores.
Resultados de IC
A continuación, se muestra la tabla con el estado de estas pruebas de CI para nuestros principales repositorios:
Repositorio | IC | Despliegue de Docker | Enlaces Rotos | CodeQL | Publicación en PyPI y de la documentación |
---|---|---|---|---|---|
yolov3 | |||||
yolov5 | |||||
ultralytics | |||||
yolo-ios-app | |||||
yolo-flutter-app | |||||
hub | |||||
hub-sdk | |||||
thop | |||||
acciones | |||||
mkdocs | |||||
documentos | |||||
manual |
Cada insignia muestra el estado de la última ejecución de la prueba de CI correspondiente en el main
rama del repositorio respectivo. Si una prueba falla, la insignia mostrará un estado de "fallo", y si pasa, mostrará un estado de "aprobado".
Si detecta que una prueba falla, sería de gran ayuda que lo informara a través de un "issue" de 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 la fusión de cambios.
Cobertura de código
La cobertura de código es una métrica que representa el porcentaje de su base de código que se ejecuta cuando se ejecutan sus pruebas. Proporciona información sobre qué tan bien sus pruebas ejercitan su código y puede ser crucial para identificar partes no probadas de su aplicación. Un alto porcentaje 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 del 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 las áreas que podrían ser propensas a errores o necesitar más pruebas.
Resultados de la cobertura
Para obtener rápidamente una visión general del estado de la cobertura del código del ultralytics
paquete de python, hemos incluido una insignia y una visualización sunburst del ultralytics
resultados de la cobertura. 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, consulte https://codecov.io/github/ultralytics/ultralytics.
Repositorio | Cobertura de código |
---|---|
ultralytics |
En el gráfico de rayos solares a continuación, el círculo más interno es el proyecto completo, alejándose del centro están las carpetas y, finalmente, un solo archivo. El tamaño y el color de cada porción representan el número de declaraciones y la cobertura, respectivamente.
Preguntas frecuentes
¿Qué es la Integración Continua (CI) en Ultralytics?
La Integración Continua (CI) en Ultralytics implica la integración y prueba automática de los cambios de código para garantizar altos estándares de calidad. Nuestra configuración de CI incluye la ejecución de pruebas unitarias, comprobaciones de linting y pruebas exhaustivas. Además, realizamos la implementación de Docker, comprobaciones de enlaces rotos, análisis de CodeQL para vulnerabilidades de seguridad y la publicación de PyPI para empaquetar y distribuir nuestro software.
¿Cómo verifica Ultralytics los enlaces rotos en la documentación y el código?
Ultralytics utiliza una acción de CI específica para verificar enlaces rotos dentro de nuestros archivos markdown y HTML. Esto ayuda a mantener la integridad de nuestra documentación al escanear e identificar enlaces muertos o rotos, asegurando que los usuarios siempre tengan acceso a recursos precisos y activos.
¿Por qué es importante el análisis de CodeQL para la base de código de Ultralytics?
El análisis CodeQL es crucial para Ultralytics, ya que realiza un análisis semántico del código para encontrar posibles vulnerabilidades de seguridad y mantener altos estándares de calidad. Con CodeQL, podemos identificar y mitigar de forma proactiva los riesgos en nuestro código, lo que nos ayuda a ofrecer soluciones de software robustas y seguras.
¿Cómo utiliza Ultralytics Docker para la implementación?
Ultralytics utiliza 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, lo cual es crítico para soluciones de IA escalables y fiables.
¿Cuál es el papel de la publicación automatizada de PyPI en Ultralytics?
La publicación automatizada en PyPI garantiza que nuestros proyectos puedan empaquetarse y publicarse sin errores. Este paso es esencial para distribuir los paquetes de Python de Ultralytics, permitiendo a los usuarios instalar y utilizar fácilmente nuestras herramientas a través del Índice de Paquetes de Python (PyPI).
¿Cómo mide Ultralytics la cobertura del código y por qué es importante?
Ultralytics mide la cobertura del código integrándose con Codecov, lo que proporciona información sobre la cantidad de código base que se ejecuta durante las pruebas. Una alta cobertura del 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 la cobertura del código se pueden explorar a través de las insignias que se muestran en nuestros principales repositorios o directamente en Codecov.