مسار CI
يعمل CI عند كل دفع إلىmain وكل pull request. ويستخدم تحديد نطاق ذكيًا لتخطي الوظائف المكلفة عندما تكون التغييرات مقتصرة على مناطق غير مرتبطة.
نظرة عامة على الوظائف
| الوظيفة | الغرض | وقت التشغيل |
|---|---|---|
preflight | اكتشاف التغييرات الخاصة بالوثائق فقط، والنطاقات المتغيرة، والإضافات المتغيرة، وبناء CI manifest | دائمًا في عمليات الدفع وطلبات السحب غير المسودة |
security-fast | اكتشاف المفاتيح الخاصة، وتدقيق workflow عبر zizmor، وتدقيق تبعيات الإنتاج | دائمًا في عمليات الدفع وطلبات السحب غير المسودة |
build-artifacts | بناء dist/ وControl UI مرة واحدة، ورفع artifacts قابلة لإعادة الاستخدام للوظائف اللاحقة | التغييرات المرتبطة بـ Node |
checks-fast-core | مسارات صحة Linux السريعة مثل فحوصات الحزمة/عقد الإضافات/البروتوكول | التغييرات المرتبطة بـ Node |
checks-fast-extensions | تجميع مسارات تقسيم الإضافات بعد اكتمال checks-fast-extensions-shard | التغييرات المرتبطة بـ Node |
extension-fast | اختبارات مركزة للإضافات المضمّنة التي تغيّرت فقط | عند اكتشاف تغييرات في الإضافات |
check | البوابة المحلية الرئيسية في CI: pnpm check بالإضافة إلى pnpm build:strict-smoke | التغييرات المرتبطة بـ Node |
check-additional | حمايات البنية والحدود بالإضافة إلى حزمة اختبار تراجع مراقبة gateway | التغييرات المرتبطة بـ Node |
build-smoke | اختبارات smoke للـ CLI المبني واختبار smoke لذاكرة بدء التشغيل | التغييرات المرتبطة بـ Node |
checks | مسارات Linux Node الأثقل: الاختبارات الكاملة، واختبارات القنوات، وتوافق Node 22 للدفع فقط | التغييرات المرتبطة بـ Node |
check-docs | تنسيق الوثائق وفحصها واختبارات الروابط المعطلة | عند تغيير الوثائق |
skills-python | Ruff + pytest للـ Skills المعتمدة على Python | التغييرات المرتبطة بـ Python Skills |
checks-windows | مسارات اختبارات خاصة بـ Windows | التغييرات المرتبطة بـ Windows |
macos-node | مسار اختبارات TypeScript على macOS باستخدام artifacts المبنية المشتركة | التغييرات المرتبطة بـ macOS |
macos-swift | فحص Swift وبناؤه واختباراته لتطبيق macOS | التغييرات المرتبطة بـ macOS |
android | مصفوفة بناء Android واختباره | التغييرات المرتبطة بـ Android |
ترتيب الإخفاق السريع
تُرتب الوظائف بحيث تفشل الفحوصات الرخيصة قبل تشغيل الوظائف المكلفة:- يقرر
preflightأي المسارات موجودة أصلًا. ومنطقdocs-scopeوchanged-scopeهما خطوتان داخل هذه الوظيفة، وليسا وظيفتين مستقلتين. - تفشل
security-fastوcheckوcheck-additionalوcheck-docsوskills-pythonبسرعة من دون انتظار وظائف artifact ومصفوفات المنصات الأثقل. - يتداخل
build-artifactsمع مسارات Linux السريعة حتى يتمكن المستهلكون اللاحقون من البدء بمجرد جاهزية البنية المشتركة. - بعد ذلك تتفرع مسارات المنصات ووقت التشغيل الأثقل:
checks-fast-coreوchecks-fast-extensionsوextension-fastوchecksوchecks-windowsوmacos-nodeوmacos-swiftوandroid.
scripts/ci-changed-scope.mjs وتغطيه اختبارات الوحدة في src/scripts/ci-changed-scope.test.ts.
ويعيد workflow المنفصل install-smoke استخدام نص النطاق نفسه عبر وظيفة preflight الخاصة به. فهو يحسب run_install_smoke من إشارة changed-smoke الأضيق، لذلك لا يعمل smoke الخاص بـ Docker/install إلا للتغييرات المرتبطة بالتثبيت والتعبئة والحاويات.
في عمليات الدفع، تضيف مصفوفة checks مسار compat-node22 الخاص بالدفع فقط. أما في pull requests، فيُتخطى هذا المسار وتظل المصفوفة مركزة على مسارات الاختبار/القنوات العادية.
المشغّلات
| المشغّل | الوظائف |
|---|---|
blacksmith-16vcpu-ubuntu-2404 | preflight وsecurity-fast وbuild-artifacts وفحوصات Linux وفحوصات الوثائق وPython Skills وandroid |
blacksmith-32vcpu-windows-2025 | checks-windows |
macos-latest | macos-node وmacos-swift |