0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · درس

تصفية المسارات وعمليات البناء الانتقائية

شغّل مسارات العمل والمهام المتأثرة بالتغيير فقط باستخدام مرشحات المسارات واكتشاف التغييرات والمصفوفات الشرطية في المستودعات الأحادية ومتعددة المستودعات

تصفية المسارات وعمليات البناء الانتقائية درس مجاني في CI/CD with GitHub Actions & DevOps Pipelines على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في CI/CD with GitHub Actions & DevOps Pipelines، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة CI/CD with GitHub Actions & DevOps Pipelines 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) وفتح باقي دورة CI/CD with GitHub Actions & DevOps Pipelines، انتقل إلى CoddyKit PRO. تتضمن دورة CI/CD with GitHub Actions & DevOps Pipelines 4 دروس في المجموع.

ماذا ستتعلم في «تصفية المسارات وعمليات البناء الانتقائية»؟

شغّل مسارات العمل والمهام المتأثرة بالتغيير فقط باستخدام مرشحات المسارات واكتشاف التغييرات والمصفوفات الشرطية في المستودعات الأحادية ومتعددة المستودعات تتمرن على CI/CD with GitHub Actions & DevOps Pipelines مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ CI/CD with GitHub Actions & DevOps Pipelines؟

لا تُشترط خبرة سابقة. CI/CD with GitHub Actions & DevOps Pipelines على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تصفية المسارات وعمليات البناء الانتقائية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس CI/CD with GitHub Actions & DevOps Pipelines هذا؟

نعم. كل درس في CI/CD with GitHub Actions & DevOps Pipelines يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. CI/CD للمستودعات أحادية البنية
  2. سير العمل عبر المستودعات
  3. إدارة سير العمل مركزيًا
  4. تصفية المسارات وعمليات البناء الانتقائية
← العودة إلى CI/CD with GitHub Actions & DevOps Pipelines