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