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-Veröffentlichung: Dieser Test prüft, ob das Projekt ohne Fehler verpackt und auf PyPi veröffentlicht werden kann.
CI-Ergebnisse
Nachfolgend finden Sie die Tabelle mit dem Status dieser CI-Tests für unsere Haupt-Repositories:
Repository | CI | Docker-Bereitstellung | Defekte Links | CodeQL | PyPI- und Dokumentenveröffentlichung |
---|---|---|---|---|---|
yolov3 | |||||
yolov5 | |||||
ultralytics | |||||
yolo-ios-app | |||||
yolo-flutter-app | |||||
Hub | |||||
hub-sdk | |||||
thop | |||||
Aktionen | |||||
mkdocs | |||||
docs | |||||
Handbuch |
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.
Repository | Codeabdeckung |
---|---|
ultralytics |
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.
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.
Wie überprüft Ultralytics Dokumentation und Code auf defekte Links?
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.