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ório | CI | Implementação do Docker | Ligações quebradas | CodeQL | Publicação no PyPI e da documentação |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| sdk | |||||
| lite | |||||
| openapi | |||||
| skills | |||||
| yolo-ios-app | |||||
| yolo-flutter-app | |||||
| thop | |||||
| ações | |||||
| mkdocs | |||||
| documentação | |||||
| manual | |||||
| estrelas | |||||
| 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.
| Repositório | Cobertura de código | Gráfico de explosão solar |
|---|---|---|
| ações | ||
| ultralytics | ||
| inferência | ||
| yolo-flutter-app | ||
| yolo-ios-app | ||
| llm | ||
| perfil | ||
| modelo | ||
| template-rust | ||
| replicate |
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 Ultralytics utiliza uma ação de CI específica para verificar links quebrados nos nossos ficheiros Markdown e HTML. Isso 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 corretos e disponíveis.
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.