عن المشروع
gha-doctor هو أداة سطر أوامر تُشخّص سير عمل GitHub Actions من أجل الـ Jobs غير المستقرة والدقائق المهدرة والخطوات البطيئة ومشكلات التخزين المؤقت وأنماط التصميم المعيبة في أمر واحد وبلا أي إعدادات مسبقة. يتم وضعه في الدليل alongside actionlint (لدقة التصحيح) وzizmor (للأمن) لتغطية السرعة والتكلفة والموثوقية. يقرأ ملفات .github/workflows لإجراء فحوصات ثابتة ويستخدم GITHUB_TOKEN موجود أو مصادقة أداة gh لتحليل سجل التشغيل؛ ويعمل وضع الفحص فقط دون اتصال بدون أي مصادقة. يدعم العلم --repo owner/name جلب ملفات سير العمل وسجل التشغيل من مستودع آخر عبر الواجهة البرمجية، لذلك لا حاجة إلى إعادة المستودعات، ويدعم --org إجراء فحص أسطول كامل عبر منظمة أو مستخدم.
تنظيم التحليل الثابت يقوم على 21 قاعدة موثّقة (D001 إلى D021) بدرجات خطورة وأرقام أسطر تشير إلى موقع YAML المحدد. تغطي هذه القواعد أشياء مثل: غياب التزامن مع cancel-in-progress في سير العمل الخاص بـ pull request، وJobs بدون timeout-minutes، واستخدام setup-node/setup-python/setup-java بدون مدخل التخزين المدمج، وتحققات التاريخ الكامل، وجداول cron الأكثر تكراراً من كل 15 دقيقة، واستخدام مشغّلي macOS وWindows مع كل دفعة دفع، وdocker build-push بدون cache-from، وactions/cache بدون restore-keys، واستخدام continue-on-error على مستوى Job، والإبقاء الافتراضي للنتائج، والمصفوفات الضخمة، واستخدام npm install بدلاً من npm ci، والإشارات المزدوجة push وpull_request غير المقيدة، وcron عند الدقيقة 0،和使用 شارات المشغّلين المُغلقة أو المتقاعدّة،وإصدارات الإجراءات،ورؤوس الأفعال التلقائية غير محدّثة،وأوامر سير العمل المهجورة،وأطوار Node المُهجورة في الإجراءات المنشورة، وسير العمل الجدولي دون حاجز مستودع. يمكن كتم النتائج عبر تعليق على السطر المحدد أو عالمياً عبر --disable، ويمكن شرح كل قاعدة بشكل غير متصل عبر --explain.
تحليل سجل التشغيل يكشف الـ Jobs غير المستقرة بالبحث عن Jobs فشلت ونجت على نفس Commit، ويُبلغ عن معدل النجاح لكل سير عمل، ومدى p50 وp95، وزمن الانتظار والتكلفة، ويحدّد أبطأ الخطوات والدقائق المهدرة، ويمكن قياس نسب إصابة وتخفيف التخزين المؤقت وأسماء الاختبارات غير المستقرة من سجلات Jobs. كل ما يُقاس يتجمع في درجة صحة مفصلة من 0 إلى 100 يمكن كتابتها كشارة SVG. صيغ المخرجات تشمل نصاً عادياً وJSON قابلاً للقراءة الآلية مع JSON Schemas منشورة وMarkdown وSARIF 2.1.0 وأوامر سير العمل التعليلية وHTML تقرير ذاتي يحتوي رسوم بيانية مضمّنة.
وضع الإصلاح التلقائي يطبّق تعديلات خطية دقيقة للقواعد القابلة للإصلاح، مع وضع diff منفصل لمعاينة التغييرات دون الكتابة. ملف تكوين المستودع في .gha-doctor.yml أو .github/gha-doctor.yml يحدّد السياسة مثل القواعد المعطّلة وحجم عينة السجل وعيّنة السجلات والعَتَبَات؛ وتأخذ علامات سطر الأوامر الصريحة الأولوية ويتجاهلها العلم no-config. يعطي رمز الخروج 2 إشارة تحذيرات للسماح بإيقاف CI، مع عتبات خطورة قابلة للتكوين وحد أدنى لدرجة الصحة.
يتضمن المشروع أيضاً composite GitHub Action تثبيت الإصدار الداعم للبيانات المدخلة args وversion وtoken وملخص Job والتعليقات الملتصقة pull-request والاختلاف الأساسي ضد فرع أساسي وعَتَبَات فشل؛ مع annotations مضمّنة مُفعّلة افتراضياً. يُدعم GitHub Enterprise Server عبر متغير GH_HOST. كما يوفر وضع Model Context Protocol stdio ستة أدوات للقراءة فقط (analyze_repo, lint_repo, preview_fixes, run_deep_dive, org_overview, explain_rule) حتى يتمكن عملاء MCP من استعلام صحة CI؛ والخادم مدرج في سجل MCP الرسمي ويمكن تشغيله أيضاً من صورة الحاوية.
تتوفر خيارات التثبيت عبر امتداد gh CLI وHomebrew وScoop وصورة Docker متعددة البُني خالية من التوزيعات وgo install وaqua وmise/ubi وasdf وإصدارات جاهزة وحزم deb/rpm/apk واكتمال shells ومغاليق pre-commit. يعمل ملعب المتصفح على تشغيل محلل والتصحيحات التلقائية عملاءً عبر WebAssembly. يذكر الدليل أن المشروع بُني ویُصان من قبل وكيل ذكاء اصطناعي وأن الأداة لا تقرأ إلا من المستودعات؛ واستخدام المستودعات الخاصة يحتاج إذن Actions read وإذن Contents read.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.