Zum Inhalt springen

Kontinuierliche Integration (CI)

Kontinuierliche Integration (CI) ist ein wesentlicher Aspekt der Softwareentwicklung, der die automatische Integration und das Testen von Änderungen beinhaltet. CI ermöglicht es uns, qualitativ hochwertigen Code zu pflegen, indem Probleme frühzeitig und häufig im Entwicklungsprozess erkannt werden. Bei Ultralytics verwenden 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 manchmal umfassendere Tests beinhaltet, abhängig vom Repository.
  • Docker-Deployment: Dieser Test überprüft das Deployment des Projekts mit Docker, um sicherzustellen, dass die Dockerfile und die zugehörigen Skripte korrekt funktionieren.
  • Defekte 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 hilft, potenzielle Sicherheitslücken zu finden und eine hohe Codequalität aufrechtzuerhalten.
  • PyPI Publishing: Dieser Test prüft, ob das Projekt ohne Fehler verpackt und in PyPI veröffentlicht werden kann.

CI-Ergebnisse

Nachfolgend finden Sie die Tabelle mit dem Status dieser CI-Tests für unsere Haupt-Repositories:

RepositoryCIDocker-BereitstellungDefekte LinksCodeQLPyPI- und Dokumentenveröffentlichung
yolov3YOLOv3 CIDocker-Images veröffentlichenÜberprüfe defekte LinksCodeQL
yolov5YOLOv5 CIDocker-Images veröffentlichenÜberprüfe defekte LinksCodeQL
ultralyticsultralytics CIDocker-Images veröffentlichenÜberprüfe defekte LinksCodeQLAuf PyPI veröffentlichen und Dokumente bereitstellenConda-Builds
yolo-ios-appiOS App CICodeQLiOS App veröffentlichen
yolo-flutter-appFlutter App CICodeQLAuf pub.dev veröffentlichen
HubHUB CIÜberprüfe defekte Links
hub-sdkHUB-SDK CIÜberprüfe defekte LinksCodeQLAuf PyPI veröffentlichen
thopUltralytics AktionenCodeQLAuf PyPI veröffentlichen
AktionenActions CICodeQLAuf PyPI veröffentlichen
mkdocsUltralytics AktionenCodeQLAuf PyPI veröffentlichen
docsUltralytics AktionenÜberprüfe defekte LinksDomains prüfenpages-build-deployment
HandbuchUltralytics AktionenÜberprüfe defekte Linkspages-build-deployment
SterneUltralytics AktionenAnalytik aktualisieren
CLIPCLIP-KI

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

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

Denken Sie daran, dass ein erfolgreicher CI-Test nicht bedeutet, dass alles perfekt ist. Es wird immer empfohlen, den Code vor der Bereitstellung oder dem Zusammenführen von Änderungen manuell zu überprüfen.

Codeabdeckung

Die Codeabdeckung ist eine Metrik, die den Prozentsatz Ihrer Codebasis darstellt, der ausgeführt wird, wenn Ihre Tests laufen. Sie gibt Aufschluss darüber, wie gut Ihre Tests Ihren Code ausführen, und kann entscheidend sein, um ungetestete Teile Ihrer Anwendung zu identifizieren. Ein hoher Prozentsatz der Codeabdeckung wird oft mit einer geringeren Wahrscheinlichkeit von Fehlern in Verbindung gebracht. Es ist jedoch wichtig zu verstehen, dass die Codeabdeckung nicht die Abwesenheit von Fehlern garantiert. Sie gibt lediglich an, welche Teile des Codes durch die Tests ausgeführt wurden.

Integration mit codecov.io

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

Durch die Integration mit Codecov wollen wir die Qualität unseres Codes erhalten und verbessern, indem wir uns auf Bereiche konzentrieren, die anfällig für Fehler sein könnten oder weiterer Tests bedürfen.

Abdeckungsergebnisse

Um schnell einen Einblick in den Code Coverage Status des ultralytics Python-Paket haben wir ein Badge und eine Sunburst-Visualisierung des ultralytics Abdeckungsergebnisse. Diese Bilder zeigen den Prozentsatz des Codes, der durch unsere Tests abgedeckt wird, und bieten eine auf einen Blick erfassbare Metrik unserer Testbemühungen. Für vollständige Details siehe https://codecov.io/github/ultralytics/ultralytics.

RepositoryCodeabdeckung
ultralyticscodecov

In der Sunburst-Grafik unten ist der innerste Kreis das gesamte Projekt, von der Mitte weg sind Ordner und schließlich eine einzelne Datei. Die Größe und Farbe jedes Segments stellen die Anzahl der Anweisungen bzw. die Abdeckung dar.

Ultralytics Codecov Bild

FAQ

Was ist Continuous Integration (CI) in Ultralytics?

Die kontinuierliche Integration (CI) bei Ultralytics umfasst die automatische Integration und das Testen von Codeänderungen, um hohe Qualitätsstandards sicherzustellen. Unser CI-Setup umfasst die Durchführung von Unit-Tests, Linting-Prüfungen und umfassenden Tests. Zusätzlich führen wir Docker-Bereitstellung, Broken-Link-Prüfungen, CodeQL-Analysen auf Sicherheitslücken und PyPI-Veröffentlichung durch, um unsere Software zu verpacken und zu verteilen.

Ultralytics verwendet eine spezielle CI-Aktion, um in unseren markdown- und HTML-Dateien auf defekte Links zu prüfen. Dies trägt zur Aufrechterhaltung der Integrität unserer Dokumentation bei, indem tote oder defekte Links gescannt und identifiziert werden, wodurch sichergestellt wird, dass Benutzer jederzeit Zugriff auf genaue und aktuelle Ressourcen haben.

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

Die CodeQL-Analyse ist für Ultralytics von entscheidender Bedeutung, da sie eine semantische Codeanalyse durchführt, um potenzielle Sicherheitslücken zu finden und hohe Qualitätsstandards aufrechtzuerhalten. Mit CodeQL können wir Risiken in unserem Code proaktiv erkennen und minimieren und so robuste und sichere Softwarelösungen bereitstellen.

Wie nutzt Ultralytics Docker für die Bereitstellung?

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

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

Die automatisierte PyPI-Veröffentlichung stellt sicher, dass unsere Projekte fehlerfrei verpackt und veröffentlicht werden können. Dieser Schritt ist entscheidend für die Verteilung der Python-Pakete von Ultralytics, da er es Benutzern ermöglicht, unsere Tools einfach über den Python Package Index (PyPI) zu installieren und zu verwenden.

Wie misst Ultralytics die Codeabdeckung und warum ist sie wichtig?

Ultralytics misst die Codeabdeckung durch die Integration mit Codecov und bietet so Einblicke, wie viel des Codes während der Tests ausgeführt wird. Eine hohe Codeabdeckung kann auf gut getesteten Code hindeuten und helfen, ungetestete Bereiche aufzudecken, die anfällig für Fehler sein könnten. Detaillierte Metriken zur Codeabdeckung können über Badges auf unseren Haupt-Repositories oder direkt auf Codecov eingesehen werden.



📅 Erstellt vor 2 Jahren ✏️ Aktualisiert vor 3 Tagen
glenn-jocherleonnilpderrengerUltralyticsAssistantBurhan-Q

Kommentare