Continuous Integration (CI)

Continuous Integration (CI) ist ein wesentlicher Aspekt der Softwareentwicklung, bei dem Änderungen automatisch integriert und getestet werden. CI ermöglicht es uns, durch das frühzeitige und häufige Erkennen von Problemen während des Entwicklungsprozesses eine hohe Codequalität zu gewährleisten. 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 die Ausführung von Unit-Tests, Linting-Prüfungen und je nach Repository manchmal auch umfassendere Tests beinhaltet.
  • Docker Deployment: Dieser Test überprüft die Bereitstellung des Projekts mittels Docker, um sicherzustellen, dass das Dockerfile und die dazugehörigen Skripte korrekt funktionieren.
  • Broken Links: Dieser Test scannt die Codebasis nach defekten oder toten 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 Sicherheitslücken zu finden und eine hohe Codequalität beizubehalten.
  • PyPI Publishing: Dieser Test prüft, ob das Projekt fehlerfrei paketiert 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 DeploymentBroken LinksCodeQLPyPI and Docs Publishing
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-app (App Store)iOS App CICodeQLPublish iOS App
yolo-flutter-appFlutter App CICodeQLPublish to pub.dev
hubHUB CICheck Broken links
hub-sdkHUB-SDK CICheck Broken linksCodeQLPublish to PyPI
thopUltralytics ActionsCodeQLPublish to PyPI
actionsActions CICodeQLPublish to PyPI
mkdocsUltralytics ActionsCodeQLPublish to PyPI
docsUltralytics ActionsCheck Broken linksCheck Domainspages-build-deployment
handbookUltralytics ActionsCheck Broken linkspages-build-deployment
starsUltralytics ActionsUpdate Analytics
CLIPCLIP CI

Jedes Badge zeigt den Status des letzten Laufs des entsprechenden CI-Tests im main-Branch des jeweiligen Repositorys. Wenn ein Test fehlschlägt, zeigt das Badge den Status "failing" an, und wenn er erfolgreich ist, zeigt es den Status "passing" an.

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

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

Codeabdeckung

Die Codeabdeckung (Code Coverage) ist eine Metrik, die den Prozentsatz deiner Codebasis darstellt, der bei der Ausführung deiner Tests ausgeführt wird. Sie bietet Einblicke darüber, wie gut deine Tests deinen Code abdecken, und kann entscheidend dabei sein, nicht getestete Teile deiner Anwendung zu identifizieren. Ein hoher Prozentsatz an Codeabdeckung wird oft mit einer geringeren Wahrscheinlichkeit für Fehler in Verbindung gebracht. Es ist jedoch wichtig zu verstehen, dass die Codeabdeckung keine Abwesenheit von Fehlern garantiert. Sie zeigt 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, Abdeckungsvergleiche zwischen Commits und visuelle Overlays direkt auf deinem Code, die anzeigen, welche Zeilen abgedeckt wurden.

Durch die Integration mit Codecov möchten wir die Qualität unseres Codes erhalten und verbessern, indem wir uns auf Bereiche konzentrieren, die fehleranfällig sein könnten oder weitere Tests benötigen.

Abdeckungsergebnisse

Um schnell einen Einblick in den Codeabdeckungsstatus des ultralytics Python-Pakets zu erhalten, haben wir ein Badge und eine Sunburst-Grafik der ultralytics Abdeckungsergebnisse eingefügt. Diese Bilder zeigen den Prozentsatz des durch unsere Tests abgedeckten Codes und bieten eine schnelle Metrik für unsere Testanstrengungen. Für vollständige Details besuche den Ultralytics Codecov-Bericht.

RepositoryCodeabdeckung
ultralyticscodecov

In der unten stehenden Sunburst-Grafik repräsentiert der innerste Kreis das gesamte Projekt. Je weiter man sich vom Zentrum entfernt, desto mehr gelangt man zu Ordnern und schließlich zu einer einzelnen Datei. Die Größe und Farbe jedes Sektors repräsentieren die Anzahl der Anweisungen bzw. die Abdeckung.

Ultralytics Codecov Image

FAQ

Was ist Continuous Integration (CI) bei Ultralytics?

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

Ultralytics verwendet eine spezifische CI-Aktion, um nach defekten Links zu suchen innerhalb unserer Markdown- und HTML-Dateien. Dies hilft dabei, die Integrität unserer Dokumentation zu wahren, indem tote oder defekte Links gescannt und identifiziert werden, sodass Nutzer immer Zugriff auf genaue und aktuelle Ressourcen haben.

Warum ist die CodeQL-Analyse für die Codebasis von Ultralytics wichtig?

CodeQL-Analyse ist für Ultralytics entscheidend, da sie eine semantische Codeanalyse durchführt, um potenzielle Sicherheitslücken zu finden und hohe Qualitätsstandards beizubehalten. Mit CodeQL können wir proaktiv Risiken in unserem Code identifizieren und mindern, was uns hilft, robuste und sichere Softwarelösungen bereitzustellen.

Wie nutzt Ultralytics Docker für die Bereitstellung?

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

Welche Rolle spielt die automatisierte PyPI-Veröffentlichung bei Ultralytics?

Die automatisierte PyPI-Veröffentlichung stellt sicher, dass unsere Projekte ohne Fehler paketiert und veröffentlicht werden können. Dieser Schritt ist wesentlich für die Verbreitung der Python-Pakete von Ultralytics, sodass Nutzer unsere Tools einfach über den Python Package Index (PyPI) installieren und nutzen können.

Wie misst Ultralytics die Codeabdeckung und warum ist sie wichtig?

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 fehleranfällig sein könnten. Detaillierte Codeabdeckungsmetriken können über Badges eingesehen werden, die auf unseren Haupt-Repositories angezeigt werden, oder direkt auf Codecov.

Kommentare