ما هي Matrix Strategy؟
تتيح لك مصفوفة البناء تشغيل نفس الـ job عبر مجموعات مختلفة من المتغيرات (نظام تشغيل، إصدار لغة، إلخ) بالتوازي.
مثال أساسي
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node: [16, 18, 20]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm install && npm test
في هذا المثال سيتم تشغيل 9 وظائف بالتوازي (3 أنظمة × 3 إصدارات).
استبعاد مجموعات معينة
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node: [14, 16, 18]
exclude:
- os: windows-latest
node: 14
إضافة متغيرات مخصصة
strategy:
matrix:
node: [16, 18]
include:
- node: 16
npm: 8
- node: 18
npm: 9
تحديد الحد الأقصى للوظائف المتوازية
strategy:
matrix:
version: [1, 2, 3, 4, 5, 6]
max-parallel: 3
⚠️ الاستخدام المفرط للمصفوفات قد يستهلك دقائق CI بسرعة. حدد
max-parallelللتحكم في عدد الوظائف المتزامنة.
إخفاق سريع (Fail Fast)
strategy:
fail-fast: true # يوقف جميع الوظائف إذا فشلت واحدة
matrix:
version: [1, 2, 3]
مثال واقعي: اختبار عبر متصفحات
jobs:
e2e:
runs-on: ubuntu-latest
strategy:
matrix:
browser: [chromium, firefox, webkit]
steps:
- uses: actions/checkout@v4
- run: npx playwright test --browser=${{ matrix.browser }}
🎯 التالي: ربط CI باختبارات المشروع