docs/docs/ar/ci.md
2026-04-22 07:27:23 +00:00

12 KiB
Raw Blame History

read_when summary title x-i18n
تحتاج إلى فهم سبب تشغيل مهمة CI أو عدم تشغيلها
أنت تُصحّح أخطاء فحوصات GitHub Actions الفاشلة
رسم مهام CI البياني، وبوابات النطاق، وما يعادلها من الأوامر المحلية مسار CI
generated_at model provider source_hash source_path workflow
2026-04-22T07:17:53Z gpt-5.4 openai fc7ec59123aee65634736320dbf1cf5cdfb08786a78cca82ce9596fedc68b3cc ci.md 15

مسار CI

يعمل CI عند كل دفع إلى main وعند كل طلب سحب. ويستخدم تحديد نطاق ذكيًا لتخطي المهام المكلفة عندما تكون التغييرات محصورة في أجزاء غير ذات صلة.

نظرة عامة على المهام

المهمة الغرض وقت التشغيل
preflight اكتشاف التغييرات الخاصة بالوثائق فقط، والنطاقات المتغيرة، وPlugins المتغيرة، وبناء بيان CI دائمًا في عمليات الدفع وطلبات السحب غير المسودة
security-scm-fast اكتشاف المفاتيح الخاصة وتدقيق سير العمل عبر zizmor دائمًا في عمليات الدفع وطلبات السحب غير المسودة
security-dependency-audit تدقيق ملف قفل الإنتاج بدون تبعيات مقابل تنبيهات npm دائمًا في عمليات الدفع وطلبات السحب غير المسودة
security-fast التجميع المطلوب لمهام الأمان السريعة دائمًا في عمليات الدفع وطلبات السحب غير المسودة
build-artifacts بناء dist/ وواجهة Control UI مرة واحدة، ورفع المخرجات القابلة لإعادة الاستخدام للمهام اللاحقة التغييرات ذات الصلة بـ Node
checks-fast-core مسارات صحة Linux السريعة مثل فحوصات bundled/plugin-contract/protocol التغييرات ذات الصلة بـ Node
checks-fast-contracts-channels فحوصات عقود القنوات المجزأة مع نتيجة فحص تجميعية مستقرة التغييرات ذات الصلة بـ Node
checks-node-extensions تجزئات اختبارات bundled-plugin الكاملة عبر مجموعة الامتدادات التغييرات ذات الصلة بـ Node
checks-node-core-test تجزئات اختبارات Node الأساسية، باستثناء مسارات القنوات وbundled والعقود والامتدادات التغييرات ذات الصلة بـ Node
extension-fast اختبارات مركزة على bundled plugins المتغيرة فقط عند اكتشاف تغييرات في الامتدادات
check المعادل الرئيسي المحلي المجزأ: أنواع الإنتاج، وlint، والحواجز، وأنواع الاختبار، وstrict smoke التغييرات ذات الصلة بـ Node
check-additional حواجز البنية والحدود وأسطح الامتدادات وحدود الحزم وتجزيئات gateway-watch التغييرات ذات الصلة بـ Node
build-smoke اختبارات smoke للـ CLI المبني وsmoke لذاكرة بدء التشغيل التغييرات ذات الصلة بـ Node
checks مسارات Linux Node المتبقية: اختبارات القنوات وتوافق Node 22 للدفع فقط التغييرات ذات الصلة بـ Node
check-docs تنسيق الوثائق وlint وفحوصات الروابط المعطلة عند تغير الوثائق
skills-python Ruff + pytest للـ Skills المعتمدة على Python التغييرات ذات الصلة بـ Skills في Python
checks-windows مسارات اختبار خاصة بـ Windows التغييرات ذات الصلة بـ Windows
macos-node مسار اختبار TypeScript على macOS باستخدام مخرجات البناء المشتركة التغييرات ذات الصلة بـ macOS
macos-swift lint وبناء واختبارات Swift لتطبيق macOS التغييرات ذات الصلة بـ macOS
android مصفوفة بناء واختبار Android التغييرات ذات الصلة بـ Android

ترتيب الإخفاق السريع

تُرتَّب المهام بحيث تفشل الفحوصات الرخيصة قبل تشغيل الفحوصات المكلفة:

  1. يحدد preflight أي المسارات موجودة أصلًا. ومنطق docs-scope وchanged-scope عبارة عن خطوات داخل هذه المهمة، وليس مهام مستقلة.
  2. تفشل security-scm-fast وsecurity-dependency-audit وsecurity-fast وcheck وcheck-additional وcheck-docs وskills-python بسرعة من دون انتظار مهام المخرجات والمنصات الأثقل.
  3. تعمل build-artifacts بالتوازي مع مسارات Linux السريعة حتى تتمكن المهام اللاحقة من البدء بمجرد جاهزية البناء المشترك.
  4. بعد ذلك تتفرع مسارات المنصات وبيئة التشغيل الأثقل: checks-fast-core وchecks-fast-contracts-channels وchecks-node-extensions وchecks-node-core-test وextension-fast وchecks وchecks-windows وmacos-node وmacos-swift وandroid.

يوجد منطق النطاق في scripts/ci-changed-scope.mjs وتغطيه اختبارات وحدات في src/scripts/ci-changed-scope.test.ts. ويعيد سير العمل المنفصل install-smoke استخدام سكربت النطاق نفسه عبر مهمة preflight الخاصة به. إذ يحسب run_install_smoke انطلاقًا من إشارة changed-smoke الأضيق، لذلك لا يعمل Docker/install smoke إلا مع التغييرات ذات الصلة بالتثبيت والتغليف والحاويات.

يوجد منطق المسارات المحلية المتغيرة في scripts/changed-lanes.mjs ويُنفَّذ بواسطة scripts/check-changed.mjs. وهذه البوابة المحلية أكثر صرامة فيما يتعلق بحدود البنية من نطاق منصة CI العام: تغييرات الإنتاج الأساسية تشغّل typecheck للإنتاج الأساسي بالإضافة إلى الاختبارات الأساسية، وتغييرات الاختبارات الأساسية فقط تشغّل typecheck للاختبارات الأساسية واختباراتها فقط، وتغييرات إنتاج الامتدادات تشغّل typecheck لإنتاج الامتدادات بالإضافة إلى اختبارات الامتدادات، وتغييرات اختبارات الامتدادات فقط تشغّل typecheck لاختبارات الامتدادات واختباراتها فقط. وتوسّع تغييرات Plugin SDK العامة أو plugin-contract التحقق ليشمل الامتدادات لأن الامتدادات تعتمد على هذه العقود الأساسية. أما زيادات الإصدار التي تقتصر على بيانات الإصدار الوصفية فتشغّل فحوصات مستهدفة للإصدار/الإعداد/تبعية الجذر. والتغييرات غير المعروفة في الجذر/الإعداد تنتقل احتياطيًا إلى جميع المسارات.

عند عمليات الدفع، تضيف مصفوفة checks مسار compat-node22 الخاص بالدفع فقط. أما في طلبات السحب، فيُتخطى هذا المسار وتبقى المصفوفة مركزة على مسارات الاختبار/القنوات المعتادة.

تنقسم أبطأ عائلات اختبارات Node إلى تجزئات تعتمد على include-file حتى تبقى كل مهمة صغيرة: تنقسم عقود القنوات إلى تغطية registry وcore في ثمانية تجزئات موزونة لكل منهما، وتنقسم اختبارات أوامر الرد لاختبارات auto-reply إلى أربع تجزئات بأنماط include، بينما تنقسم مجموعات بادئات الرد الكبيرة الأخرى في auto-reply إلى تجزئتين لكل مجموعة. كما يفصل check-additional بين أعمال compile/canary الخاصة بحدود الحزم وبين أعمال topology الخاصة بوقت التشغيل gateway/architecture.

قد يضع GitHub علامة cancelled على المهام المستبدلة عندما يصل دفع أحدث إلى المرجع نفسه في PR أو main. اعتبر ذلك ضجيجًا من CI ما لم يكن أحدث تشغيل للمرجع نفسه فاشلًا أيضًا. وتوضح فحوصات التجميع الخاصة بالتجزئات هذه الحالة الملغاة صراحةً حتى يسهل تمييزها عن فشل الاختبار.

المشغلات

المشغل المهام
ubuntu-24.04 preflight؛ كما يستخدم preflight الخاص بـ install-smoke أيضًا Ubuntu مستضافًا من GitHub حتى تتمكن مصفوفة Blacksmith من الاصطفاف مبكرًا
blacksmith-16vcpu-ubuntu-2404 security-scm-fast وsecurity-dependency-audit وsecurity-fast وbuild-artifacts وفحوصات Linux وفحوصات الوثائق وSkills Python وandroid
blacksmith-32vcpu-windows-2025 checks-windows
blacksmith-12vcpu-macos-latest macos-node وmacos-swift على openclaw/openclaw؛ أما الـ forks فتعود إلى macos-latest

المعادلات المحلية

pnpm changed:lanes   # فحص مصنف المسارات المحلية المتغيرة لـ origin/main...HEAD
pnpm check:changed   # البوابة المحلية الذكية: typecheck/lint/اختبارات متغيرة حسب مسار الحدود
pnpm check          # البوابة المحلية السريعة: production tsgo + lint مجزأ + حواجز سريعة متوازية
pnpm check:test-types
pnpm check:timed    # البوابة نفسها مع توقيتات لكل مرحلة
pnpm build:strict-smoke
pnpm check:architecture
pnpm test:gateway:watch-regression
pnpm test           # اختبارات vitest
pnpm test:channels
pnpm test:contracts:channels
pnpm check:docs     # تنسيق الوثائق + lint + الروابط المعطلة
pnpm build          # بناء dist عندما تكون مسارات CI الخاصة بالمخرجات/build-smoke مهمة