Intégration continue (CI)#
L’intégration continue (CI) est un aspect essentiel du développement logiciel qui consiste à intégrer les modifications et à les tester automatiquement. La CI nous permet de maintenir un code de haute qualité en détectant les problèmes tôt et régulièrement pendant le processus de développement. Chez Ultralytics, nous utilisons différents 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 principal test CI, qui exécute des tests unitaires et, selon le dépôt, des tests plus complets, comme des vérifications d’exportation et des benchmarks.
- Déploiement Docker : ce test vérifie le déploiement du projet avec Docker afin de 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 inactifs dans nos fichiers Markdown ou HTML.
- CodeQL : CodeQL est un outil de GitHub qui effectue une analyse sémantique de notre code, afin de repérer d’éventuelles vulnérabilités de sécurité et de maintenir un code de haute qualité.
- Publication sur PyPI : ce flux de travail construit le paquet et publie chaque nouvelle version sur PyPI.
Résultats de la CI#
Le tableau ci-dessous présente l’état de ces tests CI pour nos principaux dépôts :
| Dépôt | CI | Déploiement Docker | Liens brisés | CodeQL | Publication sur PyPI et de la documentation |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| sdk | |||||
| lite | |||||
| openapi | |||||
| skills | |||||
| yolo-ios-app | |||||
| yolo-flutter-app | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
Chaque badge indique l’état de la dernière exécution du test CI correspondant sur la branche main du dépôt concerné. Si un test échoue, le badge affiche l’état « échec » ; s’il réussit, le badge affiche l’état « réussite ».
Si tu remarques l’échec d’un test, tu nous aiderais beaucoup en le signalant dans une issue GitHub du dépôt concerné.
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 le déploiement ou la fusion de modifications.
Couverture du code#
La couverture du code est une métrique qui représente le pourcentage de ta base de code exécuté lors des tests. Elle indique dans quelle mesure les tests exercent ton code et peut être essentielle pour repérer les parties de ton application qui ne sont pas testées. Un pourcentage élevé de couverture du code est souvent associé à une probabilité moindre de bugs. Toutefois, 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#
Chez 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 informations détaillées, des comparaisons de couverture entre les commits et des superpositions visuelles directement sur ton code, qui indiquent les lignes couvertes.
En intégrant Codecov, nous cherchons à maintenir et à améliorer la qualité de notre code en nous concentrant sur les zones susceptibles de contenir des erreurs ou nécessitant des tests supplémentaires.
Résultats de couverture#
Pour avoir rapidement un aperçu de l’état de la couverture du code de nos dépôts, nous avons ajouté des badges Codecov et des aperçus en sunburst pour chaque projet suivi. Le cercle le plus intérieur de chaque sunburst représente l’ensemble du projet ; en s’éloignant du centre, on trouve les dossiers, puis un fichier unique. La taille et la couleur de chaque secteur représentent respectivement le nombre d’instructions et la couverture. Pour en savoir plus, consulte l’organisation Ultralytics sur Codecov.
| Dépôt | Couverture du code | Sunburst |
|---|---|---|
| actions | ||
| ultralytics | ||
| inference | ||
| yolo-flutter-app | ||
| yolo-ios-app | ||
| llm | ||
| profile | ||
| template | ||
| template-rust | ||
| replicate |
FAQ#
L’intégration continue (CI) chez Ultralytics consiste à intégrer et à tester automatiquement les modifications de code pour garantir des normes de qualité élevées. Notre configuration CI comprend l’exécution de tests unitaires, de tests d’exportation et de benchmarks. Nous effectuons également le déploiement Docker, la vérification des liens brisés, l’analyse CodeQL pour détecter les failles de sécurité et la publication sur PyPI afin de conditionner et de distribuer nos logiciels.
Ultralytics utilise une action CI spécifique pour vérifier la présence de liens brisés dans nos fichiers Markdown et HTML. Cela contribue à préserver l’intégrité de notre documentation en analysant et en repérant les liens morts ou brisés, afin que les utilisateurs aient toujours accès à des ressources exactes et disponibles.
L’analyse CodeQL est essentielle pour Ultralytics, car elle effectue une analyse sémantique du code afin de détecter d’éventuelles failles de sécurité et de maintenir des normes de qualité élevées. CodeQL nous permet de repérer et d’atténuer les risques de manière proactive dans notre code, ce qui nous aide à proposer des solutions logicielles robustes et sécurisées.
Ultralytics utilise Docker pour valider le déploiement de nos projets au moyen d’une action CI dédiée. Ce processus garantit le bon fonctionnement de notre Dockerfile et des scripts associés, ce qui permet de disposer d’environnements de déploiement cohérents et reproductibles, indispensables à des solutions d’IA évolutives et fiables.
La publication automatisée sur PyPI construit nos paquets et publie chaque nouvelle version sans intervention manuelle. Cette étape est essentielle à la distribution des paquets Python d’Ultralytics et permet aux utilisateurs d’installer et d’utiliser facilement nos outils via le Python Package Index (PyPI).
Ultralytics mesure la couverture du code en s’intégrant à Codecov, qui indique quelle part de la base de code est exécutée pendant les tests. Une couverture élevée peut indiquer que le code est bien testé et aider à repérer les zones non testées susceptibles de contenir des bugs. Tu peux consulter des métriques détaillées de couverture du code grâce aux badges affichés dans nos principaux dépôts ou directement sur Codecov.