تصفية المسارات وعمليات البناء الانتقائية
شغّل مسارات العمل والمهام المتأثرة بالتغيير فقط باستخدام مرشحات المسارات واكتشاف التغييرات والمصفوفات الشرطية في المستودعات الأحادية ومتعددة المستودعات
تصفية المسارات وعمليات البناء الانتقائية درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
مشكلة عمليات البناء المهدرة
في مستودع أحادي، لا ينبغي أن يؤدي تغيير في التوثيق إلى إعادة بناء وإعادة نشر الواجهة الخلفية والواجهة الأمامية وتطبيق الهاتف المحمول.
تنفّذ عمليات البناء الانتقائية الأجزاء المتأثرة بالتغيير فقط من المسار، مما يوفر الوقت ودقائق تشغيل المنفّذ.
عوامل تصفية المسارات في المشغلات
النهج الأبسط هو عامل تصفية paths في المشغّل. فلا يعمل مسار العمل إلا عند تغيير ملفات تطابق النمط.
on:
push:
paths:
- 'services/api/**'تجاهل المسارات
يمكنكم أيضًا تنفيذ العكس باستخدام paths-ignore: شغّلوا مسار العمل لكل شيء باستثناء المسارات المدرجة.
يفيد ذلك في تخطي CI عند اقتصار التغييرات على التوثيق.
on:
push:
paths-ignore:
- 'docs/**'
- '**.md'حدود عوامل تصفية المشغلات
تحدد عوامل التصفية على مستوى المشغّل ما إذا كان مسار العمل بأكمله سيعمل. لكنكم في مستودع أحادي غالبًا ما تريدون مسار عمل واحدًا يحدد المهام التي يجب تشغيلها.
لذلك، اكتشفوا التغييرات داخل مسار العمل، وفرّعوا التنفيذ بناءً على النتيجة.
إجراء اكتشاف التغييرات
يفحص إجراء dorny/paths-filter الفروقات، ويُخرج قيمًا منطقية لكل مجموعة مسارات مُسمّاة.
تقرأ المهام اللاحقة هذه المخرجات لتحديد ما إذا كان ينبغي تشغيلها.
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
api:
- 'services/api/**'
web:
- 'services/web/**'تقييد المهام بالتغييرات المكتشفة
تُعرِض مهمة الاكتشاف مخرجات، بينما تستخدم المهام اللاحقة if مع سياق needs للتشغيل المشروط.
build-api:
needs: detect
if: needs.detect.outputs.api == 'true'
runs-on: ubuntu-latest
steps:
- run: ./build-api.shتوصيل المخرجات
يجب أن تعلن مهمة الاكتشاف عن outputs التي تمرّر نتائج عامل التصفية حتى تتمكن المهام الأخرى من قراءتها.
detect:
runs-on: ubuntu-latest
outputs:
api: ${{ steps.changes.outputs.api }}
web: ${{ steps.changes.outputs.web }}المصفوفات الديناميكية
بالنسبة إلى خدمات عديدة، يمكنكم إنشاء مصفوفة ديناميكيًا من المسارات المتغيرة، بحيث تدخل الخدمات المتغيرة فقط إلى المصفوفة.
أنشئوا قائمة JSON في مهمة واحدة، ومرّروها إلى مصفوفة المهمة التالية.
strategy:
matrix:
service: ${{ fromJSON(needs.detect.outputs.list) }}استخدام Git Diff لاكتشاف التغييرات
يمكنكم أيضًا اكتشاف التغييرات باستخدام Git الخام. قارنوا الالتزام الحالي بالأساس لسرد الأدلة المتغيرة.
git diff --name-only origin/main...HEAD | cut -d/ -f1-2 | sort -uعمليات التحقق المطلوبة والتخطي
انتبهوا: إذا تم تخطي عملية تحقق مطلوبة لعدم وجود تغييرات، فقد تمنع حماية الفرع الدمج أثناء انتظارها.
الحل هو إضافة مهمة بوابة نهائية تنجح دائمًا، وتكون عملية التحقق المطلوبة الوحيدة، وتلخّص المهام المشروطة.
gate:
needs: [build-api, build-web]
if: always()
runs-on: ubuntu-latest
steps:
- run: echo 'all required jobs resolved'التخزين المؤقت لكل حزمة
تتوافق عمليات البناء الانتقائية جيدًا مع ذاكرات التخزين المؤقت لكل حزمة. اجعلوا مفتاح ذاكرة التخزين المؤقت يعتمد على ملف القفل الخاص بكل خدمة حتى لا تؤدي التغييرات غير المرتبطة إلى إبطالها.
معًا، يحافظ ذلك على سرعة مسارات المستودع الأحادي حتى مع نمو المستودع.
تحقق سريع
اختبروا مدى فهمكم لعمليات البناء الانتقائية.
مراجعة
تعلّمتم بناء ما تغيّر فقط.
- يتحكم
pathsوpaths-ignoreفي تشغيل مسارات العمل بأكملها - تُخرج إجراءات اكتشاف التغييرات قيمًا منطقية لكل مسار
- تستخدم المهام
if+needsللتشغيل المشروط، ويمكن إنشاء المصفوفات ديناميكيًا - أضيفوا مهمة بوابة باستخدام
always()للتوافق مع عمليات التحقق المطلوبة
تحافظ عمليات البناء الانتقائية على سرعة مسارات CI/CD في المستودعات الأحادية واقتصاديتها.
الأسئلة الشائعة
هل درس «تصفية المسارات وعمليات البناء الانتقائية» مجاني؟
نعم — نص درس «تصفية المسارات وعمليات البناء الانتقائية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «تصفية المسارات وعمليات البناء الانتقائية»؟
شغّل مسارات العمل والمهام المتأثرة بالتغيير فقط باستخدام مرشحات المسارات واكتشاف التغييرات والمصفوفات الشرطية في المستودعات الأحادية ومتعددة المستودعات تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «تصفية المسارات وعمليات البناء الانتقائية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- CI/CD للمستودعات أحادية البنية
- سير العمل عبر المستودعات
- إدارة سير العمل مركزيًا
- تصفية المسارات وعمليات البناء الانتقائية