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 teste automático das mesmas. A CI permite-nos manter código de alta qualidade ao detectar 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 lint e, às vezes, testes mais abrangentes, dependendo do repositório.
- Docker Deployment: Este teste verifica o implantamento do projeto usando Docker para garantir que o Dockerfile e os scripts relacionados estejam funcionando corretamente.
- Broken Links: 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 potenciais vulnerabilidades de segurança e a manter um código de alta qualidade.
- PyPI Publishing: Este teste verifica se o projeto pode ser empacotado e publicado no PyPI sem nenhum erro.
Resultados de CI#
Abaixo apresentamos a tabela que mostra o estado destes testes de CI para os nossos principais repositórios:
| Repositório | CI | Implantação Docker | Links Quebrados | CodeQL | Publicação PyPI e Docs |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| yolo-ios-app | |||||
| yolo-flutter-app | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
Cada selo mostra o status da última execução do teste de CI correspondente na ramificação main do respectivo repositório. Se um teste falhar, o selo exibirá um status de "falha" e, se for aprovado, exibirá um status de "sucesso".
Se notares um teste a falhar, seria uma grande ajuda se o pudesses reportar através de uma issue no GitHub do respetivo repositório.
Lembra-te, um teste de CI bem-sucedido não significa que tudo esteja 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 na identificação de partes não testadas da tua aplicação. Uma elevada percentagem de cobertura de código está 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. Apenas indica que partes do código foram executadas pelos testes.
Integração com codecov.io#
Na Ultralytics, integramos nossos repositórios ao 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 seu código, indicando quais linhas foram cobertas.
Ao integrar com o Codecov, pretendemos manter e melhorar a qualidade do nosso código, concentrando-nos em áreas que podem estar propensas a erros ou que necessitam de mais testes.
Resultados da Cobertura#
Para obter rapidamente uma visão geral do status de cobertura de código dos nossos repositórios, incluímos selos do Codecov e visualizações sunburst para cada projeto rastreado. O círculo mais interno de cada sunburst é 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. Para obter todos os detalhes, visite a organização Codecov da Ultralytics.
| Repositório | Cobertura de Código | Sunburst |
|---|---|---|
| actions | ||
| ultralytics | ||
| inference | ||
| yolo-flutter-app | ||
| yolo-ios-app | ||
| llm | ||
| profile | ||
| template | ||
| template-rust | ||
| replicate |
FAQ#
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. Nossa configuração de CI inclui a execução de testes unitários, verificações de lint e testes abrangentes. Além disso, realizamos implantamento no Docker, verificações de links quebrados, análise do CodeQL para vulnerabilidades de segurança e publicação no PyPI para empacotar e distribuir nosso software.
A Ultralytics usa uma ação de CI específica para verificar links quebrados em nossos arquivos markdown e HTML. Isso ajuda a manter a integridade da nossa documentação ao examinar e identificar links inativos ou quebrados, garantindo que os usuários sempre tenham acesso a recursos precisos e ativos.
A análise do CodeQL é crucial para a Ultralytics, pois ela realiza análise de código semântica para encontrar potenciais vulnerabilidades de segurança e manter padrões de alta qualidade. Com o CodeQL, podemos identificar e mitigar riscos em nosso código de forma proativa, ajudando-nos a entregar soluções de software robustas e seguras.
A Ultralytics emprega o Docker para validar o implantamento dos nossos projetos por meio de uma ação de CI dedicada. Esse processo garante que nosso Dockerfile e os scripts associados estejam funcionando corretamente, permitindo ambientes de implantamento consistentes e reproduzíveis, que são críticos para soluções de IA escaláveis e confiáveis.
A publicação no PyPI automatizada 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 por meio do Python Package Index (PyPI).
A Ultralytics mede a cobertura de código integrando-se ao 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 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.