Intégration continue (CI)
L'intégration continue (IC) est un aspect essentiel du développement de logiciels qui consiste à intégrer les changements et à les tester automatiquement. L'IC nous permet de maintenir un code de haute qualité en détectant les problèmes tôt et souvent dans le processus de développement. À Ultralytics, nous utilisons divers tests d'intégration continue pour garantir la qualité et l'intégrité de notre base de code.
Actions de l'IC
Voici une brève description de nos actions de CI :
- CI: il s'agit de notre test CI principal qui implique l'exécution de tests unitaires, de vérifications de linting et parfois de tests plus complets en fonction du référentiel.
- Déploiement Docker: Ce test vérifie le déploiement du projet à l'aide de Docker pour s'assurer que le Dockerfile et les scripts associés fonctionnent correctement.
- Liens brisés: Ce test analyse la base de code à la recherche de liens brisés ou morts dans nos fichiers markdown ou HTML.
- CodeQL: CodeQL est un outil de GitHub qui effectue une analyse sémantique de notre code, ce qui permet de trouver d'éventuelles failles de sécurité et de maintenir un code de haute qualité.
- Publication PyPI: ce test vérifie si le projet peut être empaqueté et publié sur PyPi sans aucune erreur.
RĂ©sultats de l'IC
Tu trouveras ci-dessous le tableau montrant l'état de ces tests CI pour nos principaux dépôts :
Dépôt | CI | Déploiement Docker | Liens brisés | CodeQL | Publication PyPI et Docs |
---|---|---|---|---|---|
yolov3 | |||||
yolov5 | |||||
ultralytics | |||||
hub-sdk | |||||
plaque tournante | |||||
docs |
Chaque badge indique l'état de la dernière exécution du test CI correspondant sur la page main
du référentiel concerné. Si un test échoue, le badge affichera un état "failing", et s'il réussit, il affichera un état "passing".
Si tu remarques qu'un test échoue, il serait très utile que tu le signales par le biais d'un problème GitHub dans le dépôt correspondant.
N'oublie pas qu'un test CI réussi ne signifie pas que tout est parfait. Il est toujours recommandé d'examiner manuellement le code avant de le déployer ou de fusionner les modifications.
Couverture du code
La couverture du code est une mesure qui représente le pourcentage de ta base de code qui est exécuté lorsque tes tests s'exécutent. Elle donne une idée de la façon dont tes tests exercent ton code et peut être cruciale pour identifier les parties non testées de ton application. Un pourcentage élevé de couverture du code est souvent associé à une probabilité plus faible de bogues. Cependant, il est essentiel de comprendre que la couverture du code ne garantit pas l'absence de défauts. Elle indique simplement quelles parties du code ont été exécutées par les tests.
Intégration avec codecov.io
À Ultralytics, nous avons intégré nos dépôts à codecov.io, une plateforme en ligne populaire pour mesurer et visualiser la couverture du code. Codecov fournit des aperçus détaillés, des comparaisons de couverture entre les commits, et des superpositions visuelles directement sur ton code, indiquant quelles lignes ont été couvertes.
En intégrant Codecov, nous visons à maintenir et à améliorer la qualité de notre code en nous concentrant sur les domaines qui pourraient être sujets à des erreurs ou qui nécessitent des tests supplémentaires.
RĂ©sultats de la couverture
Pour avoir rapidement un aperçu de l'état de la couverture du code de l'application ultralytics
python Nous avons inclus un badge et un visuel du soleil dans le paquet. ultralytics
les résultats de la couverture. Ces images montrent le pourcentage de code couvert par nos tests, ce qui permet de mesurer d'un coup d'œil nos efforts en matière de tests. Pour plus de détails, voir https://codecov.io/github/ultralytics/ultralytics.
DĂ©pĂ´t | Couverture du code |
---|---|
ultralytics |
Dans le graphique en forme de soleil ci-dessous, le cercle le plus intérieur représente l'ensemble du projet, en s'éloignant du centre se trouvent les dossiers puis, enfin, un seul fichier. La taille et la couleur de chaque tranche représentent respectivement le nombre de déclarations et la couverture.
FAQ
Qu'est-ce que l'intégration continue (CI) dans Ultralytics?
L'intégration continue (CI) sur Ultralytics implique d'intégrer et de tester automatiquement les modifications du code pour garantir des normes de haute qualité. Notre configuration CI comprend l'exécution de tests unitaires, de vérifications de linting et de tests complets. En outre, nous effectuons un déploiement Docker, des vérifications de liens brisés, une analyse CodeQL pour les vulnérabilités de sécurité et une publication PyPI pour emballer et distribuer nos logiciels.
Comment Ultralytics vérifie-t-il les liens brisés dans la documentation et le code ?
Ultralytics utilise une action CI spécifique pour vérifier les liens brisés dans nos fichiers markdown et HTML. Cela permet de maintenir l'intégrité de notre documentation en analysant et en identifiant les liens morts ou cassés, ce qui garantit que les utilisateurs ont toujours accès à des ressources précises et vivantes.
Pourquoi l'analyse CodeQL est-elle importante pour Ultralytics' codebase ?
L'analyse CodeQL est cruciale pour Ultralytics car elle effectue une analyse sémantique du code pour trouver les failles de sécurité potentielles et maintenir des normes de haute qualité. Avec CodeQL, nous pouvons identifier et atténuer de manière proactive les risques dans notre code, ce qui nous aide à fournir des solutions logicielles robustes et sécurisées.
Comment Ultralytics utilise-t-il Docker pour le déploiement ?
Ultralytics emploie Docker pour valider le déploiement de nos projets par le biais d'une action CI dédiée. Ce processus garantit que notre Dockerfile et les scripts associés fonctionnent correctement, ce qui permet d'obtenir des environnements de déploiement cohérents et reproductibles, ce qui est essentiel pour des solutions d'IA évolutives et fiables.
Quel est le rôle de la publication PyPI automatisée sur Ultralytics?
La publication PyPI automatisée permet de s'assurer que nos projets peuvent être empaquetés et publiés sans erreur. Cette étape est essentielle pour distribuer les paquets Ultralytics'Python , permettant aux utilisateurs d'installer et d'utiliser facilement nos outils via l'index des paquets Python (PyPI).
Comment Ultralytics mesure-t-il la couverture du code et pourquoi est-ce important ?
Ultralytics mesure la couverture du code en s'intégrant à Codecov, ce qui permet de savoir quelle partie de la base de code est exécutée pendant les tests. Une couverture de code élevée peut indiquer un code bien testé, aidant à découvrir des zones non testées qui pourraient être sujettes à des bogues. Les mesures détaillées de la couverture du code peuvent être explorées par le biais de badges affichés sur nos principaux dépôts ou directement sur Codecov.