Integração Contínua (CI)

A Integração Contínua (CI) é um aspecto essencial do desenvolvimento de software que envolve a integração de alterações e o seu teste automático. A CI permite-nos manter um código de alta qualidade, detectando problemas cedo e frequentemente no processo de desenvolvimento. Na Ultralytics, utilizamos vários testes de CI para garantir a qualidade e a integridade da nossa base de código.

Ações de CI

Aqui tens uma breve descrição das nossas ações de CI:

  • CI: Este é o nosso teste de CI principal, que envolve a execução de testes unitários, verificações de linting e, por vezes, testes mais abrangentes, dependendo do repositório.
  • Implantação Docker: Este teste verifica a implantação do projeto utilizando o Docker para garantir que o Dockerfile e os scripts relacionados estão a funcionar corretamente.
  • Links Quebrados: Este teste analisa a base de código à procura de links quebrados ou inativos nos nossos ficheiros markdown ou HTML.
  • CodeQL: O CodeQL é uma ferramenta do GitHub que realiza uma análise semântica no nosso código, ajudando a encontrar potenciais vulnerabilidades de segurança e a manter um código de alta qualidade.
  • Publicação PyPI: Este teste verifica se o projeto pode ser empacotado e publicado no PyPI sem quaisquer erros.

Resultados da CI

Abaixo encontra-se a tabela que mostra o estado destes testes de CI para os nossos repositórios principais:

RepositórioCIImplantação DockerLinks QuebradosCodeQLPublicação PyPI e Documentação
yolov3YOLOv3 CIPublicar Imagens DockerVerificar links quebradosCodeQL
yolov5YOLOv5 CIPublicar Imagens DockerVerificar links quebradosCodeQL
ultralyticsultralytics CIPublicar Imagens DockerVerificar links quebradosCodeQLPublicar no PyPI e Implantar Documentação Construções Conda
yolo-ios-app (App Store)iOS App CICodeQLPublicar Aplicação iOS
yolo-flutter-appFlutter App CICodeQLPublicar no pub.dev
hubHUB CIVerificar links quebrados
hub-sdkHUB-SDK CIVerificar links quebradosCodeQLPublicar no PyPI
thopUltralytics ActionsCodeQLPublicar no PyPI
actionsActions CICodeQLPublicar no PyPI
mkdocsUltralytics ActionsCodeQLPublicar no PyPI
docsUltralytics ActionsVerificar links quebradosVerificar Domíniospages-build-deployment
handbookUltralytics ActionsVerificar links quebradospages-build-deployment
starsUltralytics ActionsAtualizar Analytics
CLIPCLIP CI

Cada badge mostra o estado da última execução do teste de CI correspondente na branch main do respetivo repositório. Se um teste falhar, o badge exibirá um estado de "falha" e, se for aprovado, exibirá um estado de "sucesso".

Se notares que um teste falhou, seria de grande ajuda se pudesses reportá-lo através de uma issue no GitHub no respetivo repositório.

Lembra-te, um teste de CI bem-sucedido não significa que tudo está perfeito. É sempre recomendável rever manualmente o código antes da implementação ou da fusão de alterações.

Cobertura de Código

A cobertura de código é uma métrica que representa a percentagem da tua base de código que é executada quando os teus testes são executados. Fornece uma visão sobre quão bem os teus testes exercitam o teu código e pode ser crucial para identificar partes não testadas da tua aplicação. Uma alta percentagem de cobertura de código está frequentemente associada a uma menor probabilidade de erros. No entanto, é essencial entender que a cobertura de código não garante a ausência de defeitos. Indica apenas quais partes do código foram executadas pelos testes.

Integração com codecov.io

Na Ultralytics, integrámos os nossos repositórios com o codecov.io, uma plataforma online popular para medir e visualizar a cobertura de código. O Codecov fornece insights detalhados, comparações de cobertura entre commits e sobreposições visuais diretamente no teu código, indicando quais as linhas que foram cobertas.

Ao integrar com o Codecov, visamos manter e melhorar a qualidade do nosso código, concentrando-nos em áreas que podem estar sujeitas a erros ou que necessitam de mais testes.

Resultados da Cobertura

Para obteres rapidamente um vislumbre do estado da cobertura de código do pacote Python ultralytics, incluímos um badge e um gráfico sunburst dos resultados da cobertura do ultralytics. Estas imagens mostram a percentagem de código coberto pelos nossos testes, oferecendo uma métrica rápida dos nossos esforços de teste. Para detalhes completos, visita o relatório Codecov da Ultralytics.

RepositórioCobertura de Código
ultralyticscodecov

No gráfico sunburst abaixo, o círculo mais interno é o projeto inteiro, afastando-se do centro estão as pastas e, finalmente, um ficheiro individual. O tamanho e a cor de cada fatia representam o número de declarações e a cobertura, respetivamente.

Ultralytics Codecov Image

FAQ

O que é a Integração Contínua (CI) na Ultralytics?

A Integração Contínua (CI) na Ultralytics envolve a integração e o teste automáticos de alterações de código para garantir padrões de alta qualidade. A nossa configuração de CI inclui a execução de testes unitários, verificações de linting e testes abrangentes. Adicionalmente, realizamos implantação Docker, verificações de links quebrados, análise CodeQL para vulnerabilidades de segurança e publicação PyPI para empacotar e distribuir o nosso software.

A Ultralytics utiliza uma ação de CI específica para verificar links quebrados nos nossos ficheiros markdown e HTML. Isto ajuda a manter a integridade da nossa documentação ao analisar e identificar links inativos ou quebrados, garantindo que os utilizadores tenham sempre acesso a recursos precisos e atualizados.

Porque é que a análise CodeQL é importante para a base de código da Ultralytics?

A análise CodeQL é crucial para a Ultralytics, pois realiza uma análise semântica do código para encontrar potenciais vulnerabilidades de segurança e manter padrões de alta qualidade. Com o CodeQL, podemos identificar e mitigar proativamente riscos no nosso código, ajudando-nos a fornecer soluções de software robustas e seguras.

Como é que a Ultralytics utiliza o Docker para implantação?

A Ultralytics utiliza o Docker para validar a implantação dos nossos projetos através de uma ação de CI dedicada. Este processo garante que o nosso Dockerfile e os scripts associados estão a funcionar corretamente, permitindo ambientes de implantação consistentes e reproduzíveis que são críticos para soluções de IA escaláveis e fiáveis.

Qual é o papel da publicação automática no PyPI na Ultralytics?

A publicação PyPI automática garante que os nossos projetos podem ser empacotados e publicados sem erros. Este passo é essencial para distribuir os pacotes Python da Ultralytics, permitindo que os utilizadores instalem e utilizem facilmente as nossas ferramentas através do Python Package Index (PyPI).

Como é que a Ultralytics mede a cobertura de código e porque é importante?

A Ultralytics mede a cobertura de código integrando-se com o Codecov, fornecendo insights sobre quanto da base de código é executado durante os testes. Uma alta cobertura de código pode indicar um código bem testado, ajudando a descobrir áreas não testadas que podem estar sujeitas a erros. As métricas detalhadas de cobertura de código podem ser exploradas através de badges exibidos nos nossos repositórios principais ou diretamente no Codecov.

Comentários