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 testes automatizados. A CI nos permite manter um código de alta qualidade, detectando problemas de forma precoce e frequente no processo de desenvolvimento. Na Ultralytics, usamos vários testes de CI para garantir a qualidade e a integridade de nossa base de código.
Ações de CI
Aqui está uma breve descrição de nossas ações de CI:
- CI: Este é nosso teste de CI primário que envolve a execução de testes de unidade, verificações de linting e, às vezes, testes mais abrangentes, dependendo do repositório.
- Implementação com Docker: Este teste verifica a implementação do projeto usando Docker para garantir que o Dockerfile e os scripts relacionados estão a funcionar corretamente.
- Links Quebrados: Este teste examina a base de código em busca de links quebrados ou inativos em nossos arquivos markdown ou HTML.
- CodeQL: CodeQL é uma ferramenta do GitHub que realiza análise semântica em nosso código, ajudando a encontrar possíveis vulnerabilidades de segurança e manter a alta qualidade do código.
- Publicação no PyPI: Este teste verifica se o projeto pode ser empacotado e publicado no PyPi sem erros.
Resultados de CI
Abaixo está a tabela mostrando o status desses testes de CI para nossos principais repositórios:
Repositório | CI | Implantação com Docker | Links Quebrados | CodeQL | Publicação no PyPI e Documentação |
---|---|---|---|---|---|
yolov3 | |||||
yolov5 | |||||
ultralytics | |||||
hub-sdk | |||||
hub | |||||
mkdocs | |||||
thop | |||||
ações | |||||
documentos | |||||
manual |
Cada selo mostra o status da última execução do teste de CI correspondente no main
branch do repositório respectivo. Se um teste falhar, o badge exibirá um status de "falha", e se passar, exibirá um status de "aprovado".
Se você notar uma falha no teste, seria de grande ajuda se você pudesse relatá-lo por meio de um problema no GitHub no repositório respectivo.
Lembre-se de que um teste de CI bem-sucedido não significa que tudo esteja perfeito. É sempre recomendável revisar manualmente o código antes da implantação ou da fusão de alterações.
Cobertura de Código
A cobertura de código é uma métrica que representa a porcentagem da sua base de código que é executada quando seus testes são executados. Ela fornece informações sobre o quão bem seus testes exercitam seu código e pode ser crucial na identificação de partes não testadas de sua aplicação. Uma alta porcentagem de cobertura de código é frequentemente associada a uma menor probabilidade de bugs. No entanto, é essencial entender que a cobertura de código não garante a ausência de defeitos. Ela meramente indica quais partes do código foram executadas pelos testes.
Integração com codecov.io
Na Ultralytics, integramos nossos repositórios com o codecov.io, uma plataforma online popular para medir e visualizar a cobertura do código. O Codecov fornece insights detalhados, comparações de cobertura entre commits e sobreposições visuais diretamente no seu código, indicando quais linhas foram cobertas.
Ao integrar com o Codecov, nosso objetivo é manter e melhorar a qualidade do nosso código, concentrando-nos em áreas que podem ser propensas a erros ou que necessitam de mais testes.
Resultados de Cobertura
Para obter rapidamente um vislumbre do status de cobertura de código do ultralytics
pacote python, incluímos um selo e um visual sunburst do ultralytics
resultados de cobertura. Estas imagens mostram a porcentagem de código coberta pelos nossos testes, oferecendo uma métrica rápida dos nossos esforços de teste. Para detalhes completos, consulte https://codecov.io/github/ultralytics/ultralytics.
Repositório | Cobertura de Código |
---|---|
ultralytics |
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, respectivamente.
FAQ
O que é Integração Contínua (CI) em Ultralytics?
A Integração Contínua (CI) na Ultralytics envolve a integração e teste automáticos de alterações de código para garantir padrões de alta qualidade. Nossa configuração de CI inclui a execução de testes de unidade, 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.
Como a Ultralytics verifica links quebrados na documentação e no código?
A Ultralytics usa uma ação de CI específica para verificar links quebrados dentro de nossos arquivos markdown e HTML. Isso ajuda a manter a integridade de nossa documentação, escaneando e identificando links mortos ou quebrados, garantindo que os usuários sempre tenham acesso a recursos precisos e ativos.
Por que a análise CodeQL é importante para a base de código da Ultralytics?
A análise CodeQL é crucial para a Ultralytics, pois realiza análise semântica de código para encontrar potenciais vulnerabilidades de segurança e manter altos padrões de qualidade. Com o CodeQL, podemos identificar e mitigar proativamente os riscos em nosso código, ajudando-nos a fornecer soluções de software robustas e seguras.
Como a Ultralytics utiliza o Docker para implantação?
A Ultralytics utiliza o Docker para validar a implantação de nossos projetos por meio de uma ação de CI dedicada. Este processo garante que nosso Dockerfile e scripts associados estejam funcionando corretamente, permitindo ambientes de implantação consistentes e reproduzíveis, que são críticos para soluções de IA escaláveis e confiáveis.
Qual é o papel da publicação automatizada de PyPI na Ultralytics?
A publicação automatizada no PyPI garante que nossos projetos possam ser empacotados e publicados sem erros. Esta etapa é essencial para distribuir os pacotes Python da Ultralytics, permitindo que os usuários instalem e usem facilmente nossas ferramentas através do Índice de Pacotes Python (PyPI).
Como a Ultralytics mede a cobertura do código e por que isso é importante?
A Ultralytics mede a cobertura de código integrando-se com o Codecov, fornecendo insights sobre a quantidade do código base que é 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. Métricas detalhadas de cobertura de código podem ser exploradas por meio de selos exibidos em nossos principais repositórios ou diretamente no Codecov.