Zum Inhalt springen

Kontinuierliche Integration (CI)

Kontinuierliche Integration (Continuous Integration, CI) ist ein wesentlicher Aspekt der Softwareentwicklung, bei dem Änderungen automatisch integriert und getestet werden. CI ermöglicht es uns, qualitativ hochwertigen Code zu erhalten, indem wir Probleme frühzeitig und häufig im Entwicklungsprozess erkennen. 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, bei dem Unit-Tests, Linting-Checks und je nach Repository manchmal auch umfassendere Tests durchgeführt werden.
  • Docker-Bereitstellung: Dieser Test prüft die Bereitstellung des Projekts mit Docker, um sicherzustellen, dass die Dockerdatei und die dazugehörigen Skripte richtig funktionieren.
  • Kaputte Links: Bei diesem Test wird die Codebasis auf defekte oder tote Links in unseren markdown oder HTML-Dateien überprüft.
  • CodeQL: CodeQL ist ein Tool von GitHub, das eine semantische Analyse unseres Codes durchführt und uns dabei hilft, potenzielle Sicherheitslücken zu finden und qualitativ hochwertigen Code zu erhalten.
  • PyPI Publishing: Dieser Test prüft, ob das Projekt ohne Fehler verpackt und auf PyPi veröffentlicht werden kann.

CI-Ergebnisse

In der folgenden Tabelle siehst du den Status dieser CI-Tests für unsere wichtigsten Repositories:

Repository CI Docker-Bereitstellung Kaputte Links CodeQL PyPI und Docs veröffentlichen
yolov3 YOLOv3 CI Docker Images veröffentlichen Defekte Links prüfen CodeQL
yolov5 YOLOv5 CI Docker Images veröffentlichen Defekte Links prüfen CodeQL
ultralytics ultralytics CI Docker Images veröffentlichen Defekte Links prüfen CodeQL Bei PyPI veröffentlichen und Docs bereitstellen
Nabe HUB CI Defekte Links prüfen
docs Defekte Links prüfenDomains prüfen pages-build-deployment

Jedes Badge zeigt den Status des letzten Laufs des entsprechenden CI-Tests auf dem main Zweig des jeweiligen Repositorys. Wenn ein Test fehlschlägt, zeigt das Abzeichen den Status "fehlgeschlagen" an, und wenn er bestanden wird, zeigt es den Status "bestanden" an.

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

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

Code-Abdeckung

Die Codeabdeckung ist eine Kennzahl, die den Prozentsatz deiner Codebasis angibt, der bei der Ausführung deiner Tests ausgeführt wird. Sie gibt Aufschluss darüber, wie gut deine Tests deinen Code trainieren und kann entscheidend sein, um ungetestete Teile deiner 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 keine Garantie für die Abwesenheit von Fehlern ist. Sie zeigt lediglich an, welche Teile des Codes von den Tests ausgeführt wurden.

Integration mit codecov.io

Auf 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 Überlagerungen direkt auf deinem Code, die anzeigen, welche Zeilen abgedeckt wurden.

Durch die Integration von Codecov wollen wir die Qualität unseres Codes erhalten und verbessern, indem wir uns auf Bereiche konzentrieren, die fehleranfällig sind oder weitere Tests benötigen.

Erfassungsergebnisse

Um schnell einen Überblick über den Codeabdeckungsstatus der ultralytics python Paket haben wir ein Abzeichen und eine Sonnenbrille mit dem ultralytics Abdeckungsergebnisse. Diese Bilder zeigen den prozentualen Anteil des Codes, der von unseren Tests abgedeckt wird, und geben einen Überblick über unsere Testbemühungen. Alle Details findest du unter https://codecov.io/github/ultralytics/ultralytics.

Repository Code-Abdeckung
ultralytics codecov

In der untenstehenden Grafik ist der innerste Kreis das gesamte Projekt, vom Zentrum aus gesehen sind es Ordner und schließlich eine einzelne Datei. Die Größe und Farbe jedes Kreises steht für die Anzahl der Anweisungen bzw. den Umfang.

Ultralytics Codecov Bild

FAQ

Was ist Continuous Integration (CI) in Ultralytics?

Continuous Integration (CI) in Ultralytics beinhaltet das automatische Integrieren und Testen von Codeänderungen, um hohe Qualitätsstandards zu gewährleisten. Unser CI-Setup umfasst Unit-Tests, Linting-Checks und umfassende Tests. Außerdem führen wir Docker Deployment, Broken Link Checks, CodeQL-Analysen für Sicherheitslücken und PyPI Publishing durch, um unsere Software zu verpacken und zu verteilen.

Ultralytics verwendet eine spezielle CI-Aktion, um unsere markdown und HTML-Dateien auf defekte Links zu überprüfen. Dies trägt dazu bei, die Integrität unserer Dokumentation aufrechtzuerhalten, indem tote oder defekte Links gescannt und identifiziert werden, um sicherzustellen, dass die Nutzerinnen und Nutzer immer Zugang zu korrekten und aktuellen Ressourcen haben.

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

Die CodeQL-Analyse ist für Ultralytics von entscheidender Bedeutung, da sie eine semantische Code-Analyse durchführt, um potenzielle Sicherheitsschwachstellen zu finden und hochwertige Standards aufrechtzuerhalten. Mit CodeQL können wir proaktiv Risiken in unserem Code erkennen und abmildern, was uns hilft, robuste und sichere Softwarelösungen zu liefern.

Wie nutzt Ultralytics Docker für die Bereitstellung?

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

Welche Rolle spielt die automatische Veröffentlichung von PyPI in Ultralytics?

Die automatisierte Veröffentlichung im PyPI stellt sicher, dass unsere Projekte ohne Fehler gepackt und veröffentlicht werden können. Dieser Schritt ist wichtig für die Verteilung der Ultralytics' Python Pakete, damit die 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 und gibt Aufschluss darüber, wie viel von der Codebasis während der Tests ausgeführt wird. Eine hohe Codeabdeckung kann auf gut getesteten Code hinweisen und hilft, ungetestete Bereiche aufzudecken, die anfällig für Fehler sein könnten. Detaillierte Kennzahlen zur Codeabdeckung können über Badges in unseren Haupt-Repositories oder direkt bei Codecov eingesehen werden.



Erstellt am 2023-11-12, Aktualisiert am 2024-07-04
Autoren: glenn-jocher (8), Burhan-Q (1)

Kommentare