Sobre o projeto
# Sistema de Monitoramento CI Build-Eye
**Olho de Águia de Build** - Sistema de monitoramento automatizado de builds CI e análise de causa raiz para vLLM-Ascend
## Visão Geral do Sistema
Build-Eye é um sistema de monitoramento de builds CI projetado especificamente para o projeto vLLM-Ascend, capaz de:
- **Monitorar automaticamente** os builds CI do repositório vllm-project/vllm-ascend
- **Classificar inteligentemente** as causas raiz de falhas de build (problemas de código/problemas de infraestrutura/problemas de interferência)
- **Gerar sugestões** de soluções de correção de baixo custo e aplicáveis
- **Arquivar relatórios** padronizados automaticamente no repositório build-eye
## Objetivos de Monitoramento
- Repositório principal monitorado: https://github.com/vllm-project/vllm-ascend
- Repositório de arquivamento: https://github.com/winson-00178005/build-eye.git
## Classificação de Causas Raiz de Falhas
### 1. Problemas de Código do PR
- Falha em asserções de teste
- Erros de compilação (CMake, clang)
- Erros de importação Python
- Incompatibilidade com API do vLLM
- Problemas de compilação de kernel Ascend
### 2. Problemas de Infraestrutura
- Falha do K8s cache-service (cache-service.nginx-pypi-cache)
- Runner indisponível
- Problemas de hardware NPU (910B/910C/310P)
- Problemas com CANN toolkit
- Falha de comunicação multi-card HCCL
- Falha ao baixar imagem Docker
- Falha de cache Csrc
- Timeout de build
### 3. Interferência de Múltiplos PRs Concorrentes
- Múltiplos PRs mesclados em curto período
- Diferenças na matriz de versões do vLLM
- Competição por recursos de Runner
- Impacto de atualizações de imagem CANN
## Início Rápido
### 1. Configurar GitHub Token
Consulte `docs/token-setup.md` para configurar as chaves necessárias.
### 2. Instalar Dependências
```bash
pip install -r requirements.txt
```
### 3. Acionar Monitoramento Manualmente
```bash
python scripts/monitor/fetch_runs.py --output data/workflow_runs.json
python scripts/monitor/collect_metadata.py --input data/workflow_runs.json --output data/build_metadata.json
python scripts/classify/classifier.py --input data/build_metadata.json --output data/classifications.json
python scripts/recommend/recommender.py --input data/classifications.json --output data/recommendations.json
python scripts/report/generator.py --input data/recommendations.json --output reports/
```
### 4. Arquivar Relatórios
```bash
python scripts/archive/archiver.py --input reports/ --repo https://github.com/winson-00178005/build-eye.git
```
## Workflow do GitHub Actions
O sistema suporta dois modos de acionamento:
### Polling Agendado
Verifica automaticamente falhas de build recentes a cada 6 horas.
Arquivo de workflow: `.github/workflows/monitor.yml`
### Acionamento Manual
Acionamento manual através do `workflow_dispatch` do GitHub Actions.
Parâmetros opcionais:
- `lookback_hours`: quantas horas no passado verificar (padrão 24)
- `dry_run`: modo de execução de teste (sem arquivamento)
- `target_repo`: repositório alvo
## Estrutura do Projeto
```
build-eye/
├── .github/workflows/
│ └── monitor.yml # Workflow do GitHub Actions
├── scripts/
│ ├── monitor/ # Módulo de monitoramento CI
│ │ ├── github_client.py # Cliente da API do GitHub
│ │ ├── fetch_runs.py # Obter workflow runs
│ │ ├── collect_metadata.py # Coletar metadados
│ │ └── config_loader.py # Carregamento de configuração
│ ├── classify/ # Módulo de classificação de falhas
│ │ ├── classifier.py # Motor de classificação
│ │ ├── code_detector.py # Detecção de problemas de código
│ │ ├── infra_detector.py # Detecção de infraestrutura
│ │ └── interference_detector.py # Detecção de interferência
│ ├── recommend/ # Módulo de sugestões de correção
│ │ ├── recommender.py # Gerador de sugestões
│ │ └── templates.py # Templates de sugestões
│ ├── report/ # Módulo de geração de relatórios
│ │ ├── generator.py # Gerador de relatórios
│ │ ├── formatter.py # Ferramentas de formatação
│ │ └── summary.py # Geração de resumo
│ └── archive/ # Módulo de arquivamento de relatórios
│ ├── archiver.py # Arquivador
│ └── git_client.py # Cliente Git
├── config/
│ └── config.yaml # Configuração do sistema
├── templates/
│ └ example_reports.py # Exemplos de relatórios
├── tests/ # Diretório de testes
├── docs/
│ └ token-setup.md # Guia de configuração de Token
├── reports/ # Diretório de saída de relatórios
└ requirements.txt # Dependências Python
└ requirements-dev.txt # Dependências de desenvolvimento
└ README.md # Este documento
```
## Opções de Configuração
### config/config.yaml
```yaml
target_repository:
owner: vllm-project
repo: vllm-ascend
url: https://github.com/vllm-project/vllm-ascend
branch: main
monitored_workflows:
- pr_test_full.yaml
- pr_test_light.yaml
archive_repository:
owner: winson-00178005
repo: build-eye
url: https://github.com/winson-00178005/build-eye.git
monitoring:
polling_interval_hours: 6
lookback_hours: 24
```
### Variáveis de Ambiente
- `GITHUB_TOKEN`: token de acesso à API do GitHub
- `ARCHIVE_TOKEN`: token de escrita no repositório de arquivamento
- `TARGET_REPO_OWNER`: owner do repositório alvo
- `TARGET_REPO_NAME`: nome do repositório alvo
## Formato do Relatório
Cada relatório contém:
- YAML frontmatter (metadados)
- Resumo (1-2 frases)
- Análise de causa raiz (classificação, confiança, raciocínio)
- Evidências (padrões correspondentes, links, trechos de log)
- Sugestões de correção (sugestão prioritária, passos detalhados)
- PRs relacionados (apenas para classificação de interferência)
Caminho de arquivamento do relatório: `reports/YYYY/MM/DD/<classificação>-pr-<número>.md`
## Executar Testes
```bash
pip install -r requirements-dev.txt
pytest tests/
```
## Estender Pipeline Nightly
O sistema já foi projetado para suportar monitoramento de pipeline nightly, bastando adicionar na configuração:
```yaml
target_repository:
monitored_workflows:
- schedule_nightly_test_a2.yaml
- schedule_nightly_test_a3.yaml
```
## Manutenção e Extensão
### Adicionar Novas Regras de Classificação
Adicione um novo detector em `scripts/classify/`:
```python
def detect_new_pattern(log_excerpt: str) -> dict:
patterns = [...]
# Implementar lógica de detecção
```
Em seguida, chame-o em `classifier.py`.
### Adicionar Novos Templates de Sugestões
Adicione novos templates em `scripts/recommend/templates.py`.
## Licença
Apache License 2.0 - Consulte o arquivo LICENSE para detalhes
## Contato
Feedback de problemas: https://github.com/winson-00178005/build-eye/issues
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.