Overslaan naar inhoud

Continue integratie (CI)

Continuous Integration (CI) is een essentieel aspect van softwareontwikkeling waarbij wijzigingen automatisch worden geĆÆntegreerd en getest. Met CI kunnen we code van hoge kwaliteit behouden door problemen vroeg en vaak in het ontwikkelproces op te sporen. Bij Ultralytics gebruiken we verschillende CI-tests om de kwaliteit en integriteit van onze codebase te waarborgen.

CI acties

Hier volgt een korte beschrijving van onze CI-acties:

  • CI: Dit is onze primaire CI-test die bestaat uit het uitvoeren van unit tests, linting controles en soms uitgebreidere tests, afhankelijk van de repository.
  • Docker Uitrol: Deze test controleert de implementatie van het project met behulp van Docker om er zeker van te zijn dat het Dockerbestand en de bijbehorende scripts correct werken.
  • Gebroken koppelingen: Deze test scant de codebase op gebroken of dode links in onze markdown of HTML-bestanden.
  • CodeQL: CodeQL is een tool van GitHub die semantische analyses uitvoert op onze code en helpt bij het vinden van potentiĆ«le beveiligingslekken en het onderhouden van code van hoge kwaliteit.
  • PyPI publiceren: Deze test controleert of het project zonder fouten kan worden verpakt en gepubliceerd naar PyPi.

CI-resultaten

Hieronder staat de tabel met de status van deze CI-tests voor onze belangrijkste repositories:

Archief CI Docker implementatie Gebroken koppelingen CodeQL PyPI en Docs publiceren
yolov3 YOLOv3 CI Docker-afbeeldingen publiceren Gebroken links controleren CodeQL
yolov5 YOLOv5 CI Docker-afbeeldingen publiceren Gebroken links controleren CodeQL
ultralytics ultralytics CI Docker-afbeeldingen publiceren Gebroken links controleren CodeQL Publiceren naar PyPI en Documenten implementeren
naaf HUB CI Gebroken links controleren
docs Gebroken links controlerenDomeinen controleren pagina's-bouwen-uitrol

Elke badge toont de status van de laatste run van de corresponderende CI-test op de main tak van het betreffende archief. Als een test mislukt, zal de badge een "failing" status weergeven en als hij slaagt een "passing" status.

Als je merkt dat een test mislukt, zou het enorm helpen als je dit zou kunnen melden via een GitHub issue in de betreffende repository.

Onthoud dat een geslaagde CI-test niet betekent dat alles perfect is. Het is altijd aan te raden om de code handmatig te controleren voordat je deze implementeert of wijzigingen samenvoegt.

Code dekking

Code coverage is een metriek die staat voor het percentage van je codebase dat wordt uitgevoerd wanneer je tests draaien. Het geeft inzicht in hoe goed je tests je code uitvoeren en kan cruciaal zijn bij het identificeren van niet-geteste delen van je applicatie. Een hoog code coverage percentage wordt vaak geassocieerd met een lagere kans op bugs. Het is echter essentieel om te begrijpen dat codedekking geen garantie is voor de afwezigheid van defecten. Het geeft alleen aan welke delen van de code zijn uitgevoerd door de tests.

Integratie met codecov.io

Op Ultralytics hebben we onze repositories geĆÆntegreerd met codecov.io, een populair online platform voor het meten en visualiseren van codedekking. Codecov biedt gedetailleerde inzichten, dekkingsvergelijkingen tussen commits en visuele overlays direct op je code, die aangeven welke regels zijn gedekt.

Door te integreren met Codecov willen we de kwaliteit van onze code behouden en verbeteren door ons te richten op gebieden die vatbaar zijn voor fouten of die verder getest moeten worden.

Dekking Resultaten

Om snel een glimp op te vangen van de code coverage status van de ultralytics python pakket hebben we een badge en een sunburst-visual van de ultralytics dekkingsresultaten. Deze afbeeldingen laten het percentage code zien dat door onze tests wordt gedekt en geven in Ć©Ć©n oogopslag een beeld van onze testinspanningen. Zie voor volledige details https://codecov.io/github/ultralytics/ultralytics.

Archief Code dekking
ultralytics codecov

In de onderstaande zonnestraal is de binnenste cirkel het hele project, verder weg van het midden zijn mappen en uiteindelijk een enkel bestand. De grootte en kleur van elke slice geeft respectievelijk het aantal verklaringen en de dekking weer.

Ultralytics Codecov Afbeelding

FAQ

Wat is Continue Integratie (CI) in Ultralytics?

Continuous Integration (CI) in Ultralytics omvat het automatisch integreren en testen van codewijzigingen om te zorgen voor hoge kwaliteitsnormen. Onze CI setup omvat het uitvoeren van unit tests, linting controles en uitgebreide tests. Daarnaast voeren we Docker deployment, broken link checks, CodeQL analyse voor veiligheidslekken en PyPI publishing uit om onze software te verpakken en te distribueren.

Ultralytics gebruikt een specifieke CI actie om te controleren op gebroken links binnen onze markdown en HTML bestanden. Dit helpt de integriteit van onze documentatie te behouden door dode of gebroken links te scannen en te identificeren, zodat gebruikers altijd toegang hebben tot accurate en live bronnen.

Waarom is CodeQL analyse belangrijk voor Ultralytics' codebase?

CodeQL analyse is cruciaal voor Ultralytics omdat het semantische codeanalyse uitvoert om potentiƫle beveiligingslekken te vinden en hoge kwaliteitsnormen te handhaven. Met CodeQL kunnen we proactief risico's in onze code identificeren en beperken, waardoor we robuuste en veilige softwareoplossingen kunnen leveren.

Hoe gebruikt Ultralytics Docker voor implementatie?

Ultralytics gebruikt Docker om de inzet van onze projecten te valideren via een speciale CI-actie. Dit proces zorgt ervoor dat ons Dockerbestand en de bijbehorende scripts correct werken, waardoor consistente en reproduceerbare implementatieomgevingen mogelijk zijn die cruciaal zijn voor schaalbare en betrouwbare AI-oplossingen.

Wat is de rol van geautomatiseerde PyPI-publicatie in Ultralytics?

Geautomatiseerde PyPI-publicatie zorgt ervoor dat onze projecten zonder fouten kunnen worden verpakt en gepubliceerd. Deze stap is essentieel voor het distribueren van Ultralytics' Python pakketten, zodat gebruikers onze tools eenvoudig kunnen installeren en gebruiken via de Python Package Index (PyPI).

Hoe meet Ultralytics code coverage en waarom is dat belangrijk?

Ultralytics meet de codedekking door te integreren met Codecov, wat inzicht geeft in hoeveel van de codebase wordt uitgevoerd tijdens tests. Een hoge codedekking kan duiden op goed geteste code en kan helpen bij het ontdekken van ongeteste gebieden die vatbaar zijn voor bugs. Gedetailleerde code coverage statistieken kunnen worden onderzocht via badges die worden weergegeven op onze hoofdrepositories of direct op Codecov.



Aangemaakt 2023-11-12, Bijgewerkt 2024-07-04
Auteurs: glenn-jocher (8), Burhan-Q (1)

Reacties