12 KiB
| read_when | summary | title | x-i18n | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
رسم مهام CI البياني، وبوابات النطاق، وما يعادلها من الأوامر المحلية | مسار CI |
|
مسار 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 |
ترتيب الإخفاق السريع
تُرتَّب المهام بحيث تفشل الفحوصات الرخيصة قبل تشغيل الفحوصات المكلفة:
- يحدد
preflightأي المسارات موجودة أصلًا. ومنطقdocs-scopeوchanged-scopeعبارة عن خطوات داخل هذه المهمة، وليس مهام مستقلة. - تفشل
security-scm-fastوsecurity-dependency-auditوsecurity-fastوcheckوcheck-additionalوcheck-docsوskills-pythonبسرعة من دون انتظار مهام المخرجات والمنصات الأثقل. - تعمل
build-artifactsبالتوازي مع مسارات Linux السريعة حتى تتمكن المهام اللاحقة من البدء بمجرد جاهزية البناء المشترك. - بعد ذلك تتفرع مسارات المنصات وبيئة التشغيل الأثقل:
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 مهمة