Integrazione Continua (CI)

L'Integrazione Continua (CI) è un aspetto fondamentale dello sviluppo software che prevede l'integrazione delle modifiche e il loro test automatico. La CI ci permette di mantenere un codice di alta qualità, individuando i problemi precocemente e spesso durante il processo di sviluppo. In Ultralytics, utilizziamo vari test di CI per garantire la qualità e l'integrità della nostra base di codice.

Azioni CI

Ecco una breve descrizione delle nostre azioni CI:

  • CI: Questo è il nostro test CI principale che prevede l'esecuzione di unit test, controlli di linting e talvolta test più completi a seconda del repository.
  • Docker Deployment: Questo test verifica il deployment del progetto utilizzando Docker per assicurarsi che il Dockerfile e i relativi script funzionino correttamente.
  • Broken Links: Questo test analizza la base di codice alla ricerca di link interrotti o non funzionanti nei nostri file markdown o HTML.
  • CodeQL: CodeQL è uno strumento di GitHub che esegue un'analisi semantica sul nostro codice, aiutando a trovare potenziali vulnerabilità di sicurezza e a mantenere un codice di alta qualità.
  • PyPI Publishing: Questo test verifica se il progetto può essere pacchettizzato e pubblicato su PyPI senza errori.

Risultati CI

Di seguito è riportata la tabella che mostra lo stato di questi test CI per i nostri repository principali:

RepositoryCIDocker DeploymentBroken LinksCodeQLPubblicazione PyPI e Documentazione
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

Ogni badge mostra lo stato dell'ultima esecuzione del corrispondente test CI sul branch main del rispettivo repository. Se un test fallisce, il badge visualizzerà uno stato di "failing" (fallimento), mentre se viene superato, visualizzerà uno stato di "passing" (successo).

Se noti un test che fallisce, saresti di grande aiuto se potessi segnalarlo tramite una issue su GitHub nel rispettivo repository.

Ricorda, un test CI superato non significa che tutto sia perfetto. È sempre consigliabile rivedere manualmente il codice prima del deployment o dell'unione delle modifiche.

Code Coverage

La code coverage è una metrica che rappresenta la percentuale della tua base di codice che viene eseguita quando vengono eseguiti i tuoi test. Fornisce informazioni su quanto bene i tuoi test esercitano il tuo codice e può essere cruciale per identificare parti non testate della tua applicazione. Un'alta percentuale di code coverage è spesso associata a una minore probabilità di bug. Tuttavia, è essenziale capire che la code coverage non garantisce l'assenza di difetti. Indica semplicemente quali parti del codice sono state eseguite dai test.

Integrazione con codecov.io

In Ultralytics, abbiamo integrato i nostri repository con codecov.io, una popolare piattaforma online per misurare e visualizzare la code coverage. Codecov fornisce dettagli approfonditi, confronti di copertura tra commit e sovrapposizioni visive direttamente sul tuo codice, indicando quali linee sono state coperte.

Integrandoci con Codecov, miriamo a mantenere e migliorare la qualità del nostro codice concentrandoci sulle aree che potrebbero essere soggette a errori o che necessitano di ulteriori test.

Risultati della Copertura

Per avere rapidamente un'idea dello stato della code coverage del pacchetto Python ultralytics, abbiamo incluso un badge e un grafico a raggiera (sunburst) dei risultati di copertura di ultralytics. Queste immagini mostrano la percentuale di codice coperta dai nostri test, offrendo una metrica immediata dei nostri sforzi di test. Per i dettagli completi, visita il report Codecov di Ultralytics.

RepositoryCode Coverage
ultralyticscodecov

Nel grafico a raggiera qui sotto, il cerchio più interno rappresenta l'intero progetto, allontanandosi dal centro ci sono le cartelle e, infine, un singolo file. La dimensione e il colore di ogni fetta rappresentano rispettivamente il numero di istruzioni e la copertura.

Ultralytics Codecov Image

FAQ

Cos'è l'Integrazione Continua (CI) in Ultralytics?

L'Integrazione Continua (CI) in Ultralytics prevede l'integrazione e il test automatico delle modifiche al codice per garantire standard di alta qualità. La nostra configurazione CI include l'esecuzione di unit test, controlli di linting e test completi. Inoltre, eseguiamo il deployment Docker, controlli dei link interrotti, analisi CodeQL per le vulnerabilità di sicurezza e pubblicazione su PyPI per pacchettizzare e distribuire il nostro software.

Ultralytics utilizza un'azione CI specifica per verificare la presenza di link interrotti all'interno dei nostri file markdown e HTML. Questo aiuta a mantenere l'integrità della nostra documentazione scansionando e identificando link non funzionanti, assicurando che gli utenti abbiano sempre accesso a risorse accurate e attive.

Perché l'analisi CodeQL è importante per la base di codice di Ultralytics?

L'analisi CodeQL è cruciale per Ultralytics in quanto esegue un'analisi semantica del codice per trovare potenziali vulnerabilità di sicurezza e mantenere standard di alta qualità. Con CodeQL, possiamo identificare e mitigare proattivamente i rischi nel nostro codice, aiutandoci a fornire soluzioni software robuste e sicure.

Come utilizza Ultralytics Docker per il deployment?

Ultralytics impiega Docker per convalidare il deployment dei nostri progetti attraverso un'azione CI dedicata. Questo processo garantisce che il nostro Dockerfile e gli script associati funzionino correttamente, consentendo ambienti di deployment coerenti e riproducibili, fondamentali per soluzioni AI scalabili e affidabili.

Qual è il ruolo della pubblicazione automatizzata su PyPI in Ultralytics?

La pubblicazione automatizzata su PyPI garantisce che i nostri progetti possano essere pacchettizzati e pubblicati senza errori. Questo passaggio è essenziale per la distribuzione dei pacchetti Python di Ultralytics, consentendo agli utenti di installare e utilizzare facilmente i nostri strumenti tramite il Python Package Index (PyPI).

Come misura Ultralytics la code coverage e perché è importante?

Ultralytics misura la code coverage integrandosi con Codecov, fornendo informazioni su quanto della base di codice viene eseguito durante i test. Un'elevata code coverage può indicare un codice ben testato, aiutando a scoprire aree non testate che potrebbero essere soggette a bug. Metriche dettagliate sulla code coverage possono essere esplorate tramite badge visualizzati sui nostri repository principali o direttamente su Codecov.

Commenti