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

ضبط أداء المسارات

حدّدوا الاختناقات وطبّقوا تقنيات متقدمة لتحسين سرعة تنفيذ سير عمل GitHub Actions واستهلاكه للموارد.

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

عزّزوا سرعة خط الأنابيب لديكم

مرحبًا بكم في ضبط أداء خط الأنابيب! في بيئات التطوير الحديثة، تُعدّ خطوط أنابيب CI/CD السريعة ضرورية للحصول على ملاحظات سريعة واستخدام الموارد بكفاءة.

تؤدي خطوط الأنابيب البطيئة إلى هدر الوقت والمال. سيعلّمكم هذا الدرس تقنيات متقدمة لتحديد الاختناقات وتسريع مهام سير عمل GitHub Actions لديكم بشكل كبير.

العثور على اختناقات سير العمل

قبل إجراء التحسينات، تحتاجون إلى معرفة *ما* الذي ينبغي تحسينه. توفّر GitHub Actions أدوات ممتازة لتحديد الخطوات أو المهام البطيئة بدقة.

  • واجهة GitHub: اعرضوا سجلات تشغيل سير العمل. يوضّح العرض الزمني بوضوح المدة التي استغرقتها كل مهمة وخطوة.
  • ملخّصات المهام: ابحثوا عن الخطوات التي تستغرق مددًا أطول من المعتاد.
  • سجلات الإجراءات: يمكن أن تكشف السجلات التفصيلية عن أوامر أو عمليات محددة تستهلك معظم الوقت.

ركّزوا على الخطوات التي تستغرق أطول وقت باستمرار.

تشغيل المهام المستقلة بالتوازي

إذا كانت أجزاء من سير العمل لديكم لا تعتمد بعضها على بعض، فشغّلوها في الوقت نفسه! هذه طريقة بسيطة لكنها فعّالة لتقليل مدة التنفيذ الإجمالية.

حدّدوا مهام متعددة على المستوى الأعلى في سير العمل لديكم. ستشغّل GitHub Actions هذه المهام بالتوازي افتراضيًا، ما دمتم لا تحدّدون تبعيات needs بينها.

name: Parallel Jobs Example
on: [push]
jobs:
  build-frontend:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Frontend
        run: echo "Building frontend..."
  build-backend:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Backend
        run: echo "Building backend..."

تحسين إجراء Checkout

يجلب إجراء actions/checkout التعليمات البرمجية لمستودعكم. وقد يكون ذلك بطيئًا في المستودعات الكبيرة أو التي تتضمن سجلًا واسعًا. لتحسينه:

  • الاستنساخ السطحي: استخدموا fetch-depth: 1 لجلب أحدث عملية إيداع فقط، مما يوفر وقتًا كبيرًا في معظم مهام CI/CD.
  • الاستنساخ المتناثر: إذا كنتم تحتاجون إلى مجموعة فرعية فقط من الملفات، ففكّروا في استخدام الاستنساخ المتناثر، رغم أن إعداده غالبًا ما يكون أكثر تعقيدًا.

تجنّبوا استخدام fetch-depth: 0 إلا عند الضرورة القصوى، لأنه ينزّل السجل الكامل.

name: Optimized Checkout
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 1 # Only fetch the latest commit
      - name: Run Build
        run: echo "Code checked out and building..."

تقليل أحجام عناصر البناء

إذا كان سير العمل لديكم يرفع عناصر البناء أو ينزّلها، مثل الملفات الثنائية المجمّعة أو تقارير الاختبارات، فإن حجمها يؤثر مباشرةً في الأداء.

لتسريع العملية:

  • ضمّنوا الملفات الضرورية فقط: لا ترفعوا أدلة البناء المؤقتة أو السجلات التي لا تحتاجون إليها.
  • اضغطوا عناصر البناء: إذا أمكن، اضغطوا عناصر البناء الكبيرة قبل رفعها. يتولى إجراء actions/upload-artifact الضغط تلقائيًا، لكن احرصوا على أن تكون الملفات المصدر مقتضبة.

تصفية المسارات لتحقيق الكفاءة

لا تحتاج كل تغييرات التعليمات البرمجية إلى تشغيل كل مهمة. استخدموا تصفية المسارات لتشغيل المهام فقط عند تعديل الملفات ذات الصلة.

يكون ذلك مفيدًا بشكل خاص في المستودعات الكبيرة، حيث لا ينبغي لتغيير في الوثائق أن يؤدي إلى تشغيل عملية بناء كاملة للواجهة الخلفية.

حدّدوا paths أو paths-ignore ضمن مشغّل on الخاص بسير العمل.

name: Path Filter Example
on:
  push:
    paths:
      - 'frontend/**'
      - 'shared/**'
jobs:
  build-frontend:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Frontend
        run: echo "Frontend files changed, building..."

مشغّلات أسرع وتخصيص الموارد

تتوفر الآلات الافتراضية (المشغّلات) التي تنفّذ مهام سير العمل لديكم بأحجام وأنواع مختلفة. وبالنسبة إلى المهام التي تستهلك المعالج بكثافة، يمكن لمشغّل أكثر قوة أن يقلل مدة التنفيذ بشكل كبير.

  • مشغّلات GitHub المستضافة الأكبر: توفّر GitHub مشغّلات أكبر، مثل ubuntu-latest-xlarge، لأحمال العمل الأكثر تطلبًا.
  • المشغّلات المستضافة ذاتيًا: إذا كانت لديكم احتياجات محددة جدًا من العتاد أو كنتم تريدون تقليل زمن استجابة الشبكة للوصول إلى الموارد الداخلية، فيمكن تحسين المشغّلات المستضافة ذاتيًا لتلبية متطلباتكم الدقيقة.

استراتيجيات التخزين المؤقت المتقدمة

يُعدّ تخزين التبعيات مؤقتًا، مثل حزم npm أو عناصر Maven، أمرًا ضروريًا. تجاوزوا التخزين المؤقت الأساسي باتباع النصائح التالية:

  • مفاتيح ذاكرة التخزين المؤقت الدقيقة: استخدموا مفاتيح أكثر تحديدًا لتجنّب حالات فقدان ذاكرة التخزين المؤقت غير الضرورية. فعلى سبيل المثال، أدرجوا تجزئة لملف قفل محدد ونظام التشغيل.
  • ذاكرات تخزين مؤقت متعددة: لا تضعوا كل شيء في ذاكرة تخزين مؤقت واحدة وكبيرة. يمكن أن يؤدي فصل ذاكرات التخزين المؤقت حسب أنواع التبعيات المختلفة، مثل node_modules وحزم pip، إلى تحسين معدل الاستدعاء الناجح.
  • مفاتيح الاستعادة: استخدموا restore-keys لمحاولة استخدام مفاتيح متعددة لذاكرة التخزين المؤقت إذا لم يُعثر على المفتاح الأساسي، مما يزيد احتمال الاستفادة الجزئية من ذاكرة التخزين المؤقت.
name: Advanced Caching
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Cache Node Modules
        uses: actions/cache@v4
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: | # Try less specific keys if primary misses
            ${{ runner.os }}-node-
      - name: Install Dependencies
        run: npm ci

حسّنوا سير العمل هذا

تخيّلوا سير عمل يبني تعليمات الواجهة الأمامية والخلفية معًا. يعمل حاليًا بالتسلسل، كما أن عملية السحب تجلب السجل الكامل. ما التغييران اللذان سيحسّنان أداءه بشكل كبير؟

name: Inefficient Workflow
on: [push]
jobs:
  build-all:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Frontend Deps
        run: npm install
      - name: Build Frontend
        run: npm run build
      - name: Install Backend Deps
        run: pip install -r requirements.txt
      - name: Build Backend
        run: python setup.py build

مراجعة: الضبط لتحقيق السرعة

لقد تعلّمتم تقنيات فعّالة لتحسين مهام سير عمل GitHub Actions لديكم!

  • تحديد الاختناقات: استخدموا واجهة GitHub والسجلات.
  • تشغيل المهام بالتوازي: شغّلوا المهام المستقلة بشكل متزامن.
  • تحسين Checkout: استخدموا الاستنساخ السطحي.
  • تقليل عناصر البناء: حافظوا على صغر أحجام الرفع والتنزيل.
  • تصفية المسارات: شغّلوا المهام فقط عند تغيّر الملفات ذات الصلة.
  • مشغّلات أسرع: اختاروا موارد المشغّل المناسبة.
  • التخزين المؤقت المتقدم: استخدموا مفاتيح دقيقة وذاكرات تخزين مؤقت متعددة.

بتطبيق هذه الاستراتيجيات، يمكنكم جعل خطوط الأنابيب لديكم أسرع وأكثر كفاءة، وتوفير الوقت والموارد القيّمة.

الأسئلة الشائعة

هل درس «ضبط أداء المسارات» مجاني؟

نعم — نص درس «ضبط أداء المسارات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة CI/CD with GitHub Actions & DevOps Pipelines، انتقل إلى CoddyKit PRO. تتضمن دورة CI/CD with GitHub Actions & DevOps Pipelines 4 دروس في المجموع.

ماذا ستتعلم في «ضبط أداء المسارات»؟

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

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

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

كم من الوقت يستغرق درس «ضبط أداء المسارات»؟

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

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

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

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

  1. مقاييس DORA وصحة CI/CD
  2. ضبط أداء المسارات
  3. الاتجاهات المستقبلية في أتمتة DevOps
  4. تحسين تكلفة CI/CD وكفاءة المشغّلات
← العودة إلى CI/CD with GitHub Actions & DevOps Pipelines