YOLO Vision 2026:

Kontinuierliche Integration (CI)#

Kontinuierliche Integration (CI) ist ein wesentlicher Aspekt der Softwareentwicklung, bei dem Änderungen automatisch integriert und getestet werden. CI ermöglicht es uns, eine hohe Codequalität aufrechtzuerhalten, indem Probleme frühzeitig und regelmäßig im Entwicklungsprozess erkannt werden. Bei Ultralytics nutzen wir verschiedene CI-Tests, um die Qualität und Integrität unserer Codebasis sicherzustellen.

CI-Aktionen#

Hier ist eine kurze Beschreibung unserer CI-Aktionen:

  • CI: Dies ist unser primärer CI-Test, der das Ausführen von Unit-Tests, Linting-Prüfungen und je nach Repository manchmal auch umfassendere Tests umfasst.
  • Docker Deployment: Dieser Test überprüft das Deployment des Projekts mit Docker, um sicherzustellen, dass das Dockerfile und die dazugehörigen Skripte korrekt funktionieren.
  • Broken Links: Dieser Test durchsucht die Codebasis nach kaputten oder ungültigen Links in unseren Markdown- oder HTML-Dateien.
  • CodeQL: CodeQL ist ein Tool von GitHub, das eine semantische Analyse unseres Codes durchführt und dabei hilft, potenzielle Sicherheitsrisiken zu finden und eine hohe Codequalität aufrechtzuerhalten.
  • PyPI Publishing: Dieser Test prüft, ob das Projekt fehlerfrei als Paket erstellt und auf PyPI veröffentlicht werden kann.

CI-Ergebnisse#

Unten findest du eine Tabelle mit dem Status dieser CI-Tests für unsere Haupt-Repositories:

RepositoryCIDocker-BereitstellungDefekte LinksCodeQLPyPI- und Dokumentations-Veröffentlichung
yolov3YOLOv3 CIPublish Docker ImagesCheck Broken linksCodeQL
yolov5YOLOv5 CIPublish Docker ImagesCheck Broken linksCodeQL
ultralyticsultralytics CIPublish Docker ImagesCheck Broken linksCodeQLPublish to PyPI and Deploy Docs Conda Builds
yolo-ios-appiOS App CICodeQLPublish iOS App
yolo-flutter-appFlutter App CICodeQLPublish to pub.dev
thopUltralytics ActionsCodeQLPublish to PyPI
actionsActions CICodeQLPublish to PyPI
mkdocsUltralytics ActionsCodeQLPublish to PyPI
docsUltralytics ActionsCheck Broken links
handbookUltralytics ActionsCheck Broken links
starsUltralytics ActionsUpdate Analytics
CLIPCLIP CI

Jedes Badge zeigt den Status des letzten Durchlaufs des entsprechenden CI-Tests im Branch main des jeweiligen Repositories an. Wenn ein Test fehlschlägt, zeigt das Badge den Status „failing“ an, und wenn er erfolgreich ist, wird der Status „passing“ angezeigt.

Wenn du bemerkst, dass ein Test fehlschlägt, wäre es eine große Hilfe, wenn du dies über ein GitHub-Issue im entsprechenden Repository melden könntest.

Denk daran: Ein erfolgreicher CI-Test bedeutet nicht, dass alles perfekt ist. Es wird immer empfohlen, den Code manuell zu überprüfen, bevor er bereitgestellt oder Änderungen zusammengeführt werden.

Code-Abdeckung#

Die Code-Abdeckung ist eine Metrik, die den Prozentsatz deiner Codebasis darstellt, der bei der Ausführung deiner Tests durchlaufen wird. Sie bietet Einblicke darüber, wie gut deine Tests deinen Code abdecken, und kann entscheidend bei der Identifizierung ungetesteter Teile deiner Anwendung sein. Ein hoher Prozentsatz der Code-Abdeckung geht oft mit einer geringeren Wahrscheinlichkeit für Fehler einher. Es ist jedoch wichtig zu verstehen, dass die Code-Abdeckung keine Garantie für die Abwesenheit von Defekten ist. Sie gibt lediglich an, welche Teile des Codes durch die Tests ausgeführt wurden.

Integration mit codecov.io#

Bei Ultralytics haben wir unsere Repositories mit codecov.io integriert, einer beliebten Online-Plattform zur Messung und Visualisierung der Codeabdeckung. Codecov bietet detaillierte Einblicke, Abgleiche der Abdeckung zwischen Commits und visuelle Overlays direkt in deinem Code, die anzeigen, welche Zeilen abgedeckt wurden.

Durch die Integration mit Codecov zielen wir darauf ab, die Qualität unseres Codes zu erhalten und zu verbessern, indem wir uns auf Bereiche konzentrieren, die fehleranfällig sein könnten oder weitere Tests erfordern.

Abdeckungsergebnisse#

Um einen schnellen Einblick in den Status der Codeabdeckung unserer Repositories zu erhalten, haben wir Codecov-Badges und Sunburst-Vorschauen für jedes verfolgte Projekt eingebunden. Der innerste Kreis jedes Sunbursts repräsentiert das gesamte Projekt, nach außen hin folgen Ordner und schließlich eine einzelne Datei. Die Größe und Farbe jedes Segments stellen die Anzahl der Anweisungen bzw. die Abdeckung dar. Vollständige Details findest du in der Ultralytics Codecov-Organisation.

FAQ#

  • Continuous Integration (CI) bei Ultralytics umfasst die automatische Integration und das Testen von Codeänderungen, um hohe Qualitätsstandards zu gewährleisten. Unser CI-Setup beinhaltet die Durchführung von Unit-Tests, Linting-Prüfungen und umfassenden Tests. Zusätzlich führen wir Docker-Deployments, Prüfungen auf defekte Links, CodeQL-Analysen auf Sicherheitslücken und PyPI-Veröffentlichungen durch, um unsere Software zu verpacken und zu verteilen.

  • CodeQL-Analysen sind für Ultralytics von entscheidender Bedeutung, da sie eine semantische Code-Analyse durchführen, um potenzielle Sicherheitslücken zu finden und hohe Qualitätsstandards zu wahren. Mit CodeQL können wir Risiken in unserem Code proaktiv erkennen und minimieren, was uns dabei hilft, robuste und sichere Softwarelösungen bereitzustellen.

  • Ultralytics setzt Docker ein, um das Deployment unserer Projekte durch eine dedizierte CI-Aktion zu validieren. Dieser Prozess stellt sicher, dass unser Dockerfile und die dazugehörigen Skripte korrekt funktionieren, was konsistente und reproduzierbare Deployment-Umgebungen ermöglicht, die für skalierbare und zuverlässige KI-Lösungen unerlässlich sind.

  • Automatisierte PyPI-Veröffentlichungen stellen sicher, dass unsere Projekte fehlerfrei verpackt und veröffentlicht werden können. Dieser Schritt ist essenziell für die Bereitstellung der Python-Pakete von Ultralytics, sodass Nutzer unsere Tools ganz einfach über den Python Package Index (PyPI) installieren und verwenden können.

  • Ultralytics misst die Codeabdeckung durch die Integration mit Codecov, was Einblicke darüber liefert, wie viel der Codebasis während der Tests ausgeführt wird. Eine hohe Codeabdeckung kann auf gut getesteten Code hinweisen und dabei helfen, ungetestete Bereiche aufzudecken, die möglicherweise anfällig für Bugs sind. Detaillierte Metriken zur Codeabdeckung können über Badges eingesehen werden, die in unseren Haupt-Repositories oder direkt auf Codecov angezeigt werden.

Kommentare