इस प्रोजेक्ट के बारे में

# Build-Eye CI निगरानी प्रणाली **बिल्ड ईगल** - vLLM-Ascend CI बिल्ड स्वचालित निगरानी और मूल कारण विश्लेषण प्रणाली ## प्रणाली अवलोकन Build-Eye विशेष रूप से vLLM-Ascend परियोजना के लिए डिज़ाइन की गई CI बिल्ड निगरानी प्रणाली है, जो निम्नलिखित कर सकती है: - vllm-project/vllm-ascend रिपॉजिटरी के CI बिल्ड की **स्वचालित निगरानी** - बिल्ड विफलता के मूल कारणों का **बुद्धिमान वर्गीकरण** (कोड समस्या/अवसंरचना समस्या/हस्तक्षेप समस्या) - कम लागत वाले कार्यान्वयन योग्य समाधानों का **सुझाव निर्माण** - मानकीकृत रिपोर्ट का build-eye रिपॉजिटरी में स्वचालित **संग्रहण** ## निगरानी लक्ष्य - मुख्य निगरानी रिपॉजिटरी: https://github.com/vllm-project/vllm-ascend - संग्रहण होस्टिंग रिपॉजिटरी: https://github.com/winson-00178005/build-eye.git ## विफलता मूल कारण वर्गीकरण ### 1. PR कोड समस्या - परीक्षण अभिकथन विफलता - संकलन त्रुटि (CMake, clang) - Python आयात त्रुटि - vLLM API असंगतता - 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` ### मैन्युअल ट्रिगर GitHub Actions के `workflow_dispatch` के माध्यम से मैन्युअल रूप से ट्रिगर करें। वैकल्पिक पैरामीटर: - `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 एक्सेस token - `ARCHIVE_TOKEN`: संग्रहण रिपॉजिटरी राइट token - `TARGET_REPO_OWNER`: लक्ष्य रिपॉजिटरी 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