Об этом проекте
# Система мониторинга CI Build-Eye
**Build-Eye** — система автоматизированного мониторинга CI-сборок и анализа первопричин для vLLM-Ascend
## Обзор системы
Build-Eye — это система мониторинга CI-сборок, разработанная специально для проекта vLLM-Ascend, которая умеет:
- **Автоматически отслеживать** CI-сборки репозитория vllm-project/vllm-ascend
- **Интеллектуально классифицировать** первопричины сбоев сборки (проблемы кода / проблемы инфраструктуры / проблемы помех)
- **Формировать рекомендации** — низкозатратные и практически реализуемые решения по исправлению
- **Архивировать отчёты** — стандартизированные отчёты автоматически архивируются в репозиторий build-eye
## Цели мониторинга
- Основной отслеживаемый репозиторий: https://github.com/vllm-project/vllm-ascend
- Репозиторий архивации: https://github.com/winson-00178005/build-eye.git
## Классификация первопричин сбоев
### 1. Проблемы кода PR
- Сбой тестовых утверждений
- Ошибки компиляции (CMake, clang)
- Ошибки импорта Python
- Несовместимость API vLLM
- Проблемы компиляции Ascend kernel
### 2. Проблемы инфраструктуры
- Сбой K8s cache-service (cache-service.nginx-pypi-cache)
- Недоступность Runner
- Проблемы оборудования NPU (910B/910C/310P)
- Проблемы CANN toolkit
- Сбой многокартовой связи HCCL
- Сбой загрузки Docker-образа
- Сбой кэша Csrc
- Тайм-аут сборки
### 3. Помехи от параллельных PR
- Слияние нескольких PR за короткое время
- Различия в матрице версий vLLM
- Конкуренция за ресурсы Runner
- Влияние обновлений образов CANN
## Быстрый старт
### 1. Настройка GitHub Token
См. `docs/token-setup.md` для настройки необходимых секретов.
### 2. Установка зависимостей
```bash
pip install -r requirements.txt
```
### 3. Ручной запуск мониторинга
```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. Архивирование отчётов
```bash
python scripts/archive/archiver.py --input reports/ --repo https://github.com/winson-00178005/build-eye.git
```
## Рабочий процесс GitHub Actions
Система поддерживает два режима запуска:
### Периодический опрос
Каждые 6 часов автоматически проверяются последние сбои сборки.
Файл рабочего процесса: `.github/workflows/monitor.yml`
### Ручной запуск
Запуск вручную через `workflow_dispatch` в GitHub Actions.
Необязательные параметры:
- `lookback_hours`: за сколько прошедших часов проверять (по умолчанию 24)
- `dry_run`: режим пробного запуска (без архивации)
- `target_repo`: целевой репозиторий
## Структура проекта
```
build-eye/
├── .github/workflows/
│ └── monitor.yml # Рабочий процесс GitHub Actions
├── scripts/
│ ├── monitor/ # Модуль мониторинга CI
│ │ ├── github_client.py # Клиент GitHub API
│ │ ├── fetch_runs.py # Получение workflow runs
│ │ ├── collect_metadata.py # Сбор метаданных
│ │ └── config_loader.py # Загрузка конфигурации
│ ├── classify/ # Модуль классификации сбоев
│ │ ├── classifier.py # Движок классификации
│ │ ├── code_detector.py # Детектор проблем кода
│ │ ├── infra_detector.py # Детектор инфраструктуры
│ │ └── interference_detector.py # Детектор помех
│ ├── recommend/ # Модуль рекомендаций по исправлению
│ │ ├── recommender.py # Генератор рекомендаций
│ │ └── templates.py # Шаблоны рекомендаций
│ ├── report/ # Модуль генерации отчётов
│ │ ├── generator.py # Генератор отчётов
│ │ ├── formatter.py # Инструменты форматирования
│ │ └── summary.py # Генерация сводки
│ └── archive/ # Модуль архивации отчётов
│ ├── archiver.py # Архиватор
│ └── git_client.py # Git-клиент
├── config/
│ └── config.yaml # Конфигурация системы
├── templates/
│ └ example_reports.py # Примеры отчётов
├── tests/ # Каталог тестов
├── docs/
│ └ token-setup.md # Руководство по настройке Token
├── reports/ # Каталог вывода отчётов
└ requirements.txt # Зависимости Python
└ requirements-dev.txt # Зависимости для разработки
└ README.md # Данный документ
```
## Параметры конфигурации
### 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
```
### Переменные окружения
- `GITHUB_TOKEN`: токен доступа к GitHub API
- `ARCHIVE_TOKEN`: токен записи в репозиторий архивации
- `TARGET_REPO_OWNER`: владелец целевого репозитория
- `TARGET_REPO_NAME`: имя целевого репозитория
## Формат отчёта
Каждый отчёт содержит:
- YAML frontmatter (метаданные)
- Краткое описание (1-2 предложения)
- Анализ первопричины (классификация, уверенность, обоснование)
- Доказательства (совпавшие шаблоны, ссылки, фрагменты логов)
- Рекомендации по исправлению (приоритетная рекомендация, подробные шаги)
- Связанные PR (только для классификации помех)
Путь архивации отчётов: `reports/YYYY/MM/DD/<классификация>-pr-<номер>.md`
## Запуск тестов
```bash
pip install -r requirements-dev.txt
pytest tests/
```
## Расширение для nightly-пайплайна
Система уже спроектирована с поддержкой мониторинга nightly-пайплайна, достаточно добавить в конфигурацию:
```yaml
target_repository:
monitored_workflows:
- schedule_nightly_test_a2.yaml
- schedule_nightly_test_a3.yaml
```
## Поддержка и расширение
### Добавление новых правил классификации
Добавьте новый детектор в `scripts/classify/`:
```python
def detect_new_pattern(log_excerpt: str) -> dict:
patterns = [...]
# Реализация логики обнаружения
```
Затем вызовите его в `classifier.py`.
### Добавление новых шаблонов рекомендаций
Добавьте новый шаблон в `scripts/recommend/templates.py`.
## Лицензия
Apache License 2.0 — подробности см. в файле LICENSE
## Контакты
Обратная связь: https://github.com/winson-00178005/build-eye/issues
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.