0%
المهام المتوازية والاعتماديات والمصفوفات

المهام والمصفوفات

التوازي دون فقدان السيطرة على زمن التنفيذ ولا على الفاتورة.

10-15 دقيقة

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

الفخ الثاني يخص المصفوفات. يبدو اختبار ثلاثة إصدارات من اللغة على ثلاثة أنظمة تشغيل أمرًا معقولًا إلى أن نحسب: تسع عمليات تنفيذ كاملة للمجموعة مع كل commit. فإذا استهلكت كل منها خمس دقائق، فإن الـ commit الواحد يكلّف خمسًا وأربعين دقيقة من وقت الـ runner، علمًا بأن دقائق Windows تُحتسب بضعف دقائق Linux، ودقائق macOS بعشرة أضعافها. المصفوفة مُضاعِف؛ كتابتها سهلة، أما تحديد حجمها فهو العمل الحقيقي.

التوازي افتراضيًا

تبدأ مهمتان مُعرَّفتان في سير عمل واحد في وقت واحد، على runner­ين منفصلين.

name: Verifications

on:
  pull_request:
    branches: [main]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm run lint

  tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm test

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!