Ultralytics YOLO27:
Get Started

Integração Contínua (CI)#

A Integração Contínua (CI) é um aspeto essencial do desenvolvimento de software que envolve integrar alterações e testá-las automaticamente. A CI permite-nos manter código de alta qualidade ao detetar problemas cedo e frequentemente durante o 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#

Segue-se uma breve descrição das nossas ações de CI:

  • CI: este é o nosso teste de CI principal, que executa testes unitários e, dependendo do repositório, testes mais abrangentes, como verificações de exportação e benchmarks.
  • Implementação do Docker: este teste verifica a implementação do projeto com o Docker para garantir que o Dockerfile e os scripts relacionados funcionam corretamente.
  • Ligações quebradas: este teste analisa a base de código para detetar ligações quebradas ou inativas nos nossos ficheiros Markdown ou HTML.
  • CodeQL: o CodeQL é uma ferramenta do GitHub que realiza análises semânticas do nosso código, ajudando a encontrar potenciais vulnerabilidades de segurança e a manter código de alta qualidade.
  • Publicação no PyPI: este fluxo de trabalho compila o pacote e publica cada nova versão no PyPI.

Resultados de CI#

A tabela abaixo mostra o estado destes testes de CI nos nossos principais repositórios:

RepositórioCIImplementação do DockerLigações quebradasCodeQLPublicação no PyPI e da documentação
yolov3CI do YOLOv3Publicação de imagens DockerVerificação de ligações quebradasCodeQL
yolov5CI do YOLOv5Publicação de imagens DockerVerificação de ligações quebradasCodeQL
ultralyticsCI da ultralyticsPublicação de imagens DockerVerificação de ligações quebradasCodeQLPublicação no PyPI Publicação da documentação Compilações do Conda
sdkCI do SDKCodeQLPublicação no PyPI
liteCI do LiteCodeQL
openapiCI do OpenAPICodeQL
skillsCI de SkillsCodeQL
yolo-ios-appCI do app iOSCodeQLPublicar app iOS
yolo-flutter-appCI do app FlutterCodeQLPublicar no pub.dev
thopAções da UltralyticsCodeQLPublicação no PyPI
açõesCI de ActionsCodeQLPublicação no PyPI
mkdocsAções da UltralyticsCodeQLPublicação no PyPI
documentaçãoAções da UltralyticsVerificação de ligações quebradas
manualAções da UltralyticsVerificação de ligações quebradas
estrelasAções da UltralyticsAtualizar análises
CLIPCI do CLIP

Cada selo mostra o estado da última execução do teste de CI correspondente no branch main do respetivo repositório. Se um teste falhar, o selo apresentará o estado «a falhar»; se passar, apresentará o estado «aprovado».

Se detetares que um teste está a falhar, seria uma grande ajuda se o reportasses através de um issue do GitHub no respetivo repositório.

Lembra-te: um teste de CI bem-sucedido não significa que está tudo perfeito. Recomenda-se sempre rever o código manualmente antes da implementação ou da integração das alterações.

Cobertura de código#

A cobertura de código é uma métrica que representa a percentagem da tua base de código executada quando os testes são executados. Permite perceber em que medida os testes exercitam o código e pode ser essencial para identificar partes da aplicação que não foram testadas. Uma percentagem elevada de cobertura de código está frequentemente associada a uma menor probabilidade de erros. No entanto, é essencial compreender que a cobertura de código não garante a ausência de defeitos. Apenas indica que 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 informações detalhadas, comparações de cobertura entre commits e sobreposições visuais diretamente no código, indicando as linhas abrangidas.

Ao integrar o Codecov, procuramos manter e melhorar a qualidade do código, concentrando-nos nas áreas que podem estar mais sujeitas a erros ou precisar de mais testes.

Resultados da cobertura#

Para consultar rapidamente o estado da cobertura de código dos nossos repositórios, incluímos selos do Codecov e pré-visualizações em gráfico de explosão solar para cada projeto acompanhado. O círculo mais interior de cada gráfico representa o projeto inteiro; a partir do centro, surgem primeiro as pastas e, por fim, um único ficheiro. O tamanho e a cor de cada segmento representam, respetivamente, o número de instruções e a cobertura. Para ver todos os detalhes, visita a organização da Ultralytics no Codecov.

Perguntas frequentes#

  • A integração contínua (CI) na Ultralytics consiste em integrar e testar automaticamente as alterações ao código para garantir elevados padrões de qualidade. A nossa configuração de CI inclui a execução de testes unitários, testes de exportação e benchmarks. Além disso, efetuamos a implementação com Docker, verificações de links quebrados, análise do CodeQL para detetar vulnerabilidades de segurança e publicação no PyPI para empacotar e distribuir o nosso software.

  • A análise do CodeQL é essencial para a Ultralytics, pois analisa semanticamente o código para detetar possíveis vulnerabilidades de segurança e manter elevados padrões de qualidade. Com o CodeQL, podemos identificar e mitigar proativamente os riscos no código, ajudando-nos a fornecer soluções de software robustas e seguras.

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

  • A publicação automatizada no PyPI cria os nossos pacotes e publica cada nova versão sem etapas manuais. Este passo é essencial para distribuir os pacotes Python da Ultralytics, permitindo aos utilizadores instalar e utilizar facilmente as nossas ferramentas através do Índice de Pacotes Python (PyPI).

  • A Ultralytics mede a cobertura de código através da integração com o Codecov, que fornece informações sobre a parte da base de código executada durante os testes. Uma cobertura de código elevada pode indicar que o código foi bem testado e ajudar a identificar áreas não testadas que podem estar sujeitas a erros. Podes consultar métricas detalhadas de cobertura de código nos selos apresentados nos nossos principais repositórios ou diretamente no Codecov.

Comentários