Vai al contenuto

Integrazione Continua (CI)

L'integrazione continua (CI) è un aspetto essenziale dello sviluppo software che implica l'integrazione delle modifiche e il loro test automatico. La CI ci consente di mantenere un codice di alta qualità individuando i problemi in modo precoce e frequente nel processo di sviluppo. In Ultralytics, utilizziamo vari test CI per garantire la qualità e l'integrità della nostra codebase.

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, a volte, test più completi a seconda del repository.
  • Implementazione Docker: Questo test verifica l'implementazione del progetto utilizzando Docker per garantire che il Dockerfile e gli script correlati funzionino correttamente.
  • Link non funzionanti: Questo test esegue la scansione del codebase alla ricerca di link non funzionanti o interrotti nei nostri file markdown o HTML.
  • CodeQL: CodeQL è uno strumento di GitHub che esegue l'analisi semantica del nostro codice, aiutando a trovare potenziali vulnerabilità di sicurezza e a mantenere un codice di alta qualità.
  • Pubblicazione su PyPI: questo test verifica se il progetto può essere impacchettato 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:

RepositoryCIDistribuzione DockerLink non funzionantiCodeQLPubblicazione su PyPI e della documentazione
yolov3YOLOv3 CIPubblica immagini DockerControlla i link non funzionantiCodeQL
yolov5YOLOv5 CIPubblica immagini DockerControlla i link non funzionantiCodeQL
ultralyticsCI ultralyticsPubblica immagini DockerControlla i link non funzionantiCodeQLPubblica su PyPI e distribuisci la documentazioneBuild Conda
yolo-ios-appCI dell'app iOSCodeQLPubblica app iOS
yolo-flutter-appCI dell'app FlutterCodeQLPubblica su pub.dev
hubHUB CIControlla i link non funzionanti
hub-sdkHUB-SDK CIControlla i link non funzionantiCodeQLPubblica su PyPI
thopAzioni UltralyticsCodeQLPubblica su PyPI
azioniCI delle azioniCodeQLPubblica su PyPI
mkdocsAzioni UltralyticsCodeQLPubblica su PyPI
documentiAzioni UltralyticsControlla i link non funzionantiControlla i dominipages-build-deployment
manualeAzioni UltralyticsControlla i link non funzionantipages-build-deployment
stelleAzioni UltralyticsAggiornamenti analitici
CLIPCLIP CI

Ogni badge mostra lo stato dell'ultima esecuzione del test CI corrispondente sul main branch del rispettivo repository. Se un test fallisce, il badge visualizzerà uno stato di "fallimento", e se passa, visualizzerà uno stato di "superamento".

Se noti un test fallito, sarebbe di grande aiuto se potessi segnalarlo tramite un issue di GitHub nel repository corrispondente.

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

Copertura del codice

La copertura del codice è una metrica che rappresenta la percentuale del tuo codebase che viene eseguita quando vengono eseguiti i tuoi test. Fornisce informazioni su quanto bene i tuoi test esercitino il tuo codice e può essere fondamentale per identificare le parti non testate della tua applicazione. Un'alta percentuale di copertura del codice è spesso associata a una minore probabilità di bug. Tuttavia, è essenziale capire che la copertura del codice 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 piattaforma online popolare per la misurazione e la visualizzazione della code coverage. Codecov fornisce informazioni dettagliate, confronti della coverage tra i commit e sovrapposizioni visive direttamente sul codice, indicando quali righe 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 necessitare di ulteriori test.

Risultati di Copertura

Per avere rapidamente una panoramica dello stato di code coverage del ultralytics pacchetto python, abbiamo incluso un badge e una visualizzazione sunburst del ultralytics risultati di copertura. Queste immagini mostrano la percentuale di codice coperta dai nostri test, offrendo una metrica immediata dei nostri sforzi di test. Per tutti i dettagli, consultare https://codecov.io/github/ultralytics/ultralytics.

RepositoryCopertura del codice
ultralyticscodecov

Nel grafico sunburst sottostante, il cerchio più interno è 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.

Immagine Codecov Ultralytics

FAQ

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

L'Integrazione Continua (CI) in Ultralytics prevede l'integrazione e il test automatici 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, i controlli dei link interrotti, l'analisi CodeQL per le vulnerabilità di sicurezza e la pubblicazione PyPI per confezionare e distribuire il nostro software.

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

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

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

In che modo Ultralytics utilizza Docker per il deployment?

Ultralytics utilizza Docker per convalidare la distribuzione dei nostri progetti attraverso un'azione CI dedicata. Questo processo garantisce che il nostro Dockerfile e gli script associati funzionino correttamente, consentendo ambienti di distribuzione coerenti e riproducibili, fondamentali per soluzioni di IA 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 impacchettati e pubblicati senza errori. Questo passaggio è essenziale per distribuire i pacchetti Python di Ultralytics, consentendo agli utenti di installare e utilizzare facilmente i nostri strumenti tramite il Python Package Index (PyPI).

In che modo Ultralytics misura la copertura del codice e perché è importante?

Ultralytics misura la code coverage integrandosi con Codecov, fornendo informazioni su quanta parte del codice viene eseguita durante i test. Un'alta code coverage può indicare un codice ben testato, aiutando a scoprire aree non testate che potrebbero essere soggette a bug. Le metriche dettagliate della code coverage possono essere esplorate tramite i badge visualizzati sui nostri repository principali o direttamente su Codecov.



📅C reato 2 anni fa ✏️ Aggiornato 5 giorni fa
glenn-jocherleonnilpderrengerUltralyticsAssistantBurhan-Q

Commenti