Intégration continue (CI)
L'intégration continue (CI) est un aspect essentiel du développement logiciel qui implique l'intégration automatique des changements et leur test. La CI 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. Chez Ultralytics, nous utilisons divers tests CI pour garantir la qualité et l'intégrité de notre base de code.
Actions CI
Voici une brève description de nos actions 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 selon le dépôt.
- 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 scanne la base de code à la recherche de liens brisés ou inactifs dans nos fichiers markdown ou HTML.
- CodeQL : CodeQL est un outil de GitHub qui effectue une analyse sémantique sur notre code, aidant à trouver des vulnérabilités de sécurité potentielles et à maintenir un code de haute qualité.
- Publication PyPI : Ce test vérifie si le projet peut être empaqueté et publié sur PyPI sans erreur.
Résultats CI
Tu trouveras ci-dessous le tableau présentant 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 | |||||
| yolo-ios-app (App Store) | |||||
| yolo-flutter-app | |||||
| hub | |||||
| hub-sdk | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
Chaque badge montre le statut de la dernière exécution du test CI correspondant sur la branche main du dépôt respectif. Si un test échoue, le badge affichera un statut "failing" (en échec), et s'il réussit, il affichera un statut "passing" (réussi).
Si tu remarques qu'un test échoue, ce serait d'une grande aide si tu pouvais le signaler via un ticket GitHub dans le dépôt concerné.
N'oublie pas qu'un test CI réussi ne signifie pas que tout est parfait. Il est toujours recommandé de réviser manuellement le code avant le déploiement ou la fusion des changements.
Couverture de code
La couverture de code est une mesure qui représente le pourcentage de ta base de code exécuté lors de l'exécution de tes tests. Elle offre un aperçu de la manière dont tes tests sollicitent ton code et peut être cruciale pour identifier les parties non testées de ton application. Un pourcentage élevé de couverture de code est souvent associé à une probabilité plus faible de bugs. Cependant, il est essentiel de comprendre que la couverture de 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
Chez Ultralytics, nous avons intégré nos dépôts avec codecov.io, une plateforme en ligne populaire pour mesurer et visualiser la couverture de code. Codecov fournit des informations détaillées, 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 zones susceptibles d'être sujettes à des erreurs ou nécessitant des tests supplémentaires.
Résultats de couverture
Pour obtenir rapidement un aperçu de l'état de la couverture de code du package Python ultralytics, nous avons inclus un badge et une visualisation en rayon de soleil des résultats de couverture d'ultralytics. Ces images montrent le pourcentage de code couvert par nos tests, offrant une mesure immédiate de nos efforts de test. Pour tous les détails, visite le rapport Codecov d'Ultralytics.
| Dépôt | Couverture de code |
|---|---|
| ultralytics |
Dans le graphique en rayon 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 finalement, un seul fichier. La taille et la couleur de chaque segment représentent respectivement le nombre d'instructions et la couverture.
FAQ
Qu'est-ce que l'Intégration Continue (CI) chez Ultralytics ?
L'intégration continue (CI) chez Ultralytics implique l'intégration et le test automatiques des changements de code pour garantir des normes de haute qualité. Notre configuration CI inclut l'exécution de tests unitaires, vérifications de linting et tests complets. De plus, 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 empaqueter et distribuer notre logiciel.
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 au sein de nos fichiers markdown et HTML. Cela aide à maintenir l'intégrité de notre documentation en scannant et en identifiant les liens inactifs ou brisés, garantissant ainsi que les utilisateurs ont toujours accès à des ressources précises et vivantes.
Pourquoi l'analyse CodeQL est-elle importante pour la base de code d'Ultralytics ?
L'analyse CodeQL est cruciale pour Ultralytics car elle effectue une analyse sémantique du code pour trouver des vulnérabilités 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 via une action CI dédiée. Ce processus garantit que notre Dockerfile et les scripts associés fonctionnent correctement, permettant des environnements de déploiement cohérents et reproductibles qui sont critiques pour des solutions IA évolutives et fiables.
Quel est le rôle de la publication PyPI automatisée chez Ultralytics ?
La publication PyPI automatisée garantit que nos projets peuvent être empaquetés et publiés sans erreur. Cette étape est essentielle pour distribuer les packages Python d'Ultralytics, permettant aux utilisateurs d'installer et d'utiliser facilement nos outils via le Python Package Index (PyPI).
Comment Ultralytics mesure-t-il la couverture de code et pourquoi est-ce important ?
Ultralytics mesure la couverture de code en s'intégrant avec Codecov, fournissant des informations sur la quantité de base de code 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 bugs. Des mesures détaillées de couverture de code peuvent être explorées via des badges affichés sur nos principaux dépôts ou directement sur Codecov.