Ultralytics YOLO27 :

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 rapidement et régulièrement au cours du processus de développement. Chez Ultralytics, nous utilisons différents tests de CI pour garantir la qualité et l’intégrité de notre base de code.

Actions de CI#

Voici une brève description de nos actions de CI :

  • CI : Il s’agit de notre test de CI principal, qui comprend l’exécution de tests unitaires, des vérifications de linting et, parfois, des tests plus complets selon le dépôt.
  • 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 cassés : Ce test analyse la base de code à la recherche de liens cassés ou obsolètes dans nos fichiers Markdown ou HTML.
  • CodeQL : CodeQL est un outil de GitHub qui effectue une analyse sémantique de notre code afin de contribuer à détecter d’éventuelles vulnérabilités de sécurité et à maintenir un code de haute qualité.
  • Publication sur PyPI : Ce test vérifie que le projet peut être empaqueté et publié sur PyPI sans erreur.

Résultats de la CI#

Voici le tableau présentant l’état de ces tests de CI pour nos principaux dépôts :

DépôtCIDéploiement DockerLiens cassésCodeQLPublication sur PyPI et de la documentation
yolov3CI de YOLOv3Publier les images DockerVérifier les liens cassésCodeQL
yolov5CI de YOLOv5Publier les images DockerVérifier les liens cassésCodeQL
ultralyticsCI d’ultralyticsPublier les images DockerVérifier les liens cassésCodeQLPublier sur PyPI et déployer la documentation Builds Conda
sdkCI du SDKPublier sur PyPI
yolo-ios-appCI de l’application iOSCodeQLPublier l’application iOS
yolo-flutter-appCI de l’application FlutterCodeQLPublier sur pub.dev
thopActions UltralyticsCodeQLPublier sur PyPI
actionsCI des actionsCodeQLPublier sur PyPI
mkdocsActions UltralyticsCodeQLPublier sur PyPI
docsActions UltralyticsVérifier les liens cassés
handbookActions UltralyticsVérifier les liens cassés
starsActions UltralyticsMettre à jour les analyses
CLIPCI de CLIP

Chaque badge indique l’état de la dernière exécution du test d’intégration continue correspondant sur la branche main du dépôt concerné. Si un test échoue, le badge affiche l’état « en échec » et, s’il réussit, il affiche l’état « réussi ».

Si tu remarques qu’un test échoue, ce serait très utile que tu le signales via une issue GitHub dans le dépôt concerné.

N’oublie pas qu’un test de CI réussi ne signifie pas que tout est parfait. Il est toujours recommandé de vérifier manuellement le code avant de le déployer ou de fusionner des 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 de l’exécution de tes tests. Elle permet de comprendre dans quelle mesure tes tests exercent ton code et peut être essentielle pour identifier les parties non testées de ton application. Un pourcentage élevé de couverture du code est souvent associé à une probabilité moindre de présence de bugs. 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#

Chez Ultralytics, nous avons intégré nos dépôts à codecov.io, une plateforme en ligne populaire qui permet de mesurer et de 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, indiquant quelles lignes ont été couvertes.

En nous 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 davantage de tests.

Résultats de couverture#

Pour obtenir rapidement un aperçu de l’état de la couverture du code de nos dépôts, nous avons inclus des badges Codecov et des aperçus en sunburst pour chaque projet suivi. Le cercle intérieur de chaque sunburst représente l’ensemble du projet ; en s’éloignant du centre, on trouve les dossiers, puis enfin un fichier individuel. La taille et la couleur de chaque secteur représentent respectivement le nombre d’instructions et la couverture. Pour obtenir tous les détails, consulte l’organisation Ultralytics sur Codecov.

FAQ#

  • L’intégration continue (CI) chez Ultralytics consiste à intégrer et à tester automatiquement les modifications du code afin de garantir des normes de haute qualité. Notre configuration de CI comprend l’exécution de tests unitaires, de vérifications de linting et de tests complets. Nous effectuons également un déploiement Docker, des vérifications des liens cassés, une analyse CodeQL pour détecter les vulnérabilités de sécurité, ainsi que la publication sur PyPI afin d’empaqueter et de distribuer nos logiciels.

  • Ultralytics utilise une action de CI spécifique pour vérifier les liens cassés dans nos fichiers Markdown et HTML. Cela contribue à préserver l’intégrité de notre documentation en analysant et en identifiant les liens obsolètes ou cassés, afin de garantir que les utilisateurs disposent toujours de ressources exactes et accessibles.

  • L’analyse CodeQL est essentielle pour Ultralytics, car elle effectue une analyse sémantique du code afin de détecter d’éventuelles vulnérabilités de sécurité et de maintenir des normes de haute qualité. Avec CodeQL, nous pouvons identifier et atténuer proactivement les risques présents dans notre code, ce qui nous aide à fournir des solutions logicielles robustes et sécurisées.

  • Ultralytics utilise Docker pour valider le déploiement de nos projets au moyen d’une action de CI dédiée. Ce processus garantit que notre Dockerfile et nos scripts associés fonctionnent correctement, ce qui permet de disposer d’environnements de déploiement cohérents et reproductibles, essentiels à des solutions d’IA évolutives et fiables.

  • La publication automatisée sur PyPI garantit que nos projets peuvent être empaquetés et publiés sans erreur. Cette étape est essentielle pour distribuer les packages Python d’Ultralytics, afin que les utilisateurs puissent facilement installer et utiliser nos outils via l’Index des packages Python (PyPI).

  • Ultralytics mesure la couverture du code en s’intégrant à Codecov, ce qui permet de savoir quelle proportion 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 contribuer à révéler les zones non testées susceptibles de contenir des bugs. Des métriques détaillées de couverture du code sont consultables via les badges affichés sur nos principaux dépôts ou directement sur Codecov.

Commentaires