Salta para o conteúdo

Integração contínua (CI)

A Integração Contínua (IC) é um aspeto essencial do desenvolvimento de software que envolve a integração de alterações e o seu teste automático. A IC permite-nos manter um código de alta qualidade, detectando os problemas numa fase inicial e frequente do processo de desenvolvimento. Em Ultralytics, usamos vários testes de IC para garantir a qualidade e a integridade da nossa base de código.

Acções de IC

Segue-se uma breve descrição das nossas acções de IC:

  • CI: Este é o nosso principal teste de CI 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 do Docker: Este teste verifica a implantação do projeto usando o Docker para garantir que o Dockerfile e os scripts relacionados estejam funcionando corretamente.
  • Links quebrados: Este teste verifica a base de código em busca de links quebrados ou mortos em nossos arquivos markdown ou HTML.
  • CodeQL: O CodeQL é uma ferramenta do GitHub que realiza análises semânticas no nosso código, ajudando a encontrar potenciais vulnerabilidades de segurança e a manter um código de alta qualidade.
  • Publicação no PyPI: Este teste verifica se o projeto pode ser empacotado e publicado no PyPi sem quaisquer erros.

Resultados da IC

Abaixo está a tabela que mostra o estado destes testes de CI para os nossos principais repositórios:

Repositório CI Implantação do Docker Ligações quebradas CodeQL Publicação de PyPI e Docs
yolov3 YOLOv3 CI Publicar imagens do Docker Verifica as ligações quebradas CodeQL
yolov5 YOLOv5 CI Publicar imagens do Docker Verifica as ligações quebradas CodeQL
ultralytics ultralytics CI Publicar imagens do Docker Verifica as ligações quebradas CodeQL Publica no PyPI e implementa os documentos
cubo HUB CI Verifica as ligações quebradas
documentos Verifica as ligações quebradasVerifica os domínios páginas-criar-implantação

Cada emblema mostra o status da última execução do teste de CI correspondente no main do respetivo repositório. Se um teste falhar, o emblema apresentará o estado "falhando", e se passar, apresentará o estado "passando".

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

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

Cobertura do 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 de como os seus testes exercitam o seu código e pode ser crucial na identificação de partes não testadas da sua aplicação. Uma alta porcentagem de cobertura de código é frequentemente associada a uma menor probabilidade de bugs. No entanto, é essencial compreender que a cobertura de código não garante a ausência de defeitos. Indica apenas quais as partes do código que foram executadas pelos testes.

Integração com codecov.io

Em Ultralytics, integrámos os nossos repositórios com 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 linhas foram cobertas.

Ao integrarmos o Codecov, pretendemos manter e melhorar a qualidade do nosso código, concentrando-nos em áreas que possam ser propensas a erros ou que necessitem de mais testes.

Resultados da cobertura

Para obter rapidamente um vislumbre do estado da cobertura de código do ultralytics python incluímos um crachá e uma imagem de sol do ultralytics resultados de cobertura. 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 mais informações, consulta https://codecov.io/github/ultralytics/ultralytics.

Repositório Cobertura do código
ultralytics codecov

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

Ultralytics Imagem Codecov

FAQ

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

A Integração Contínua (CI) em 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 IC inclui a execução de testes unitários, verificações de linting e testes abrangentes. Além disso, realizamos a implantação do Docker, verificações de links quebrados, análise CodeQL para vulnerabilidades de segurança e publicação PyPI para empacotar e distribuir nosso software.

Ultralytics usa uma ação específica do CI para verificar se há links quebrados em nossos arquivos markdown e HTML. Isto ajuda a manter a integridade da nossa documentação, verificando e identificando links mortos ou quebrados, assegurando que os utilizadores têm sempre acesso a recursos precisos e activos.

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

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

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

Ultralytics utiliza o Docker para validar a implementação dos nossos projectos 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 implementação consistentes e reproduzíveis, que são essenciais para soluções de IA escaláveis e fiáveis.

Qual é o papel da publicação automatizada do PyPI em Ultralytics?

A publicação automatizada do PyPI garante que os nossos projectos podem ser empacotados e publicados sem erros. Este passo é essencial para distribuir os pacotes Ultralytics' Python , permitindo aos utilizadores instalar e utilizar facilmente as nossas ferramentas através do Python Package Index (PyPI).

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

Ultralytics mede a cobertura do código através da integração com o Codecov, fornecendo informações sobre a quantidade da base de código executada 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 ser propensas a bugs. As métricas detalhadas de cobertura de código podem ser exploradas através de emblemas apresentados nos nossos repositórios principais ou diretamente no Codecov.


📅 Created 11 months ago ✏️ Updated 4 days ago

Comentários