0Pricing
DevOps Bootcamp · درس

عمليات البناء المصفوفية لبيئات متعددة

استخدموا استراتيجيات المصفوفات لتشغيل المهام بالتوازي عبر إصدارات متعددة من اللغات أو أنظمة التشغيل أو التهيئات.

عمليات البناء المصفوفية لبيئات متعددة درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.

ما المقصود ببناءات المصفوفة؟

مرحبًا بكم في ميزة قوية في GitHub Actions: بناءات المصفوفة! تخيلوا أنكم بحاجة إلى اختبار شيفرتكم عبر العديد من البيئات المختلفة، مثل أنظمة التشغيل المتنوعة أو إصدارات لغات البرمجة.

بدلًا من إنشاء مسار عمل منفصل لكل تركيبة، تتيح لكم بناءات المصفوفة تعريف مجموعة من المتغيرات، ثم تشغّل GitHub Actions مهامكم تلقائيًا لكل تركيبة ممكنة من تلك المتغيرات.

لماذا نستخدم بناءات المصفوفة؟

تُعدّ بناءات المصفوفة مفيدة للغاية من أجل:

  • الاختبار عبر الأنظمة الأساسية: ضمان عمل تطبيقكم على Windows وmacOS وLinux.
  • التوافق مع إصدارات متعددة: الاختبار باستخدام إصدارات مختلفة من Node.js أو Python أو قاعدة البيانات لديكم.
  • التنفيذ المتوازي: تشغيل جميع هذه الاختبارات في الوقت نفسه، مما يوفر قدرًا كبيرًا من الوقت.

تساعدكم هذه الميزة على تحقيق تغطية اختبار أوسع بكفاءة.

الصيغة الأساسية للمصفوفة

تعرّفون المصفوفة داخل القسم strategy من المهمة. وداخل strategy.matrix، تسردون متغيرًا واحدًا أو أكثر، ويكون لكل منها مصفوفة من القيم.

بعد ذلك، تنشئ GitHub Actions مهمة لكل تركيبة. دعونا نرَ شكل ذلك:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [14, 16, 18]
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
      - name: Install dependencies
        run: npm ci
      - name: Run tests
        run: npm test

مثال: إصدارات متعددة من Node.js

في المقطع السابق، عرّفنا متغيرًا باسم node-version بثلاث قيم: 14 و16 و18.

سيؤدي تعريف المهمة الواحد هذا إلى تشغيل ثلاث مهام منفصلة، تعمل كل منها على ubuntu-latest ولكن باستخدام إصدار مختلف من Node.js. وهذا يضمن عمل مشروعكم عبر هذه الإصدارات.

دمج متغيرات مصفوفة متعددة

لستم مقيدين بمتغير واحد فقط! يمكنكم دمج عدة متغيرات في المصفوفة. فمثلًا، قد ترغبون في اختبار أنظمة تشغيل مختلفة باستخدام إصدارات مختلفة من Node.js.

ما عليكم سوى إضافة المزيد من أزواج المفتاح والقيمة ضمن strategy.matrix. وسيكون العدد الإجمالي للمهام حاصل ضرب عدد القيم لكل متغير.

مثال: مصفوفة نظام التشغيل وNode.js

إليكم طريقة إعداد مصفوفة للاختبار على كل من Ubuntu وWindows باستخدام إصداري Node.js‏ 16 و18.

سيؤدي ذلك إلى إنشاء 2 (نظاما التشغيل) * 2 (إصدارات Node.js) = 4 مهام منفصلة.

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        node-version: [16, 18]
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
      - name: Install dependencies
        run: npm ci
      - name: Run tests
        run: npm test

تخصيص التركيبات باستخدام 'include'

قد تحتاجون أحيانًا إلى تركيبات محددة لا يغطيها حاصل الضرب الديكارتي الافتراضي، أو قد ترغبون في إضافة متغيرات أخرى إلى بناءات معينة. استخدموا include لإضافة إدخالات جديدة إلى المصفوفة.

فمثلًا، قد ترغبون في تشغيل اختبار إضافي على Ubuntu باستخدام Node.js‏ 14 فقط، أو تمرير متغير بيئة محدد إلى تركيبة معينة من نظام التشغيل والإصدار.

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        node-version: [16, 18]
        include:
          - os: ubuntu-latest
            node-version: 14
            test-suite: 'full'

استبعاد تركيبات محددة

ماذا لو كانت لديكم تركيبة معروفة بفشلها أو غير ذات صلة بمشروعكم؟ تتيح لكم الكلمة المفتاحية exclude إزالة إعدادات محددة من المصفوفة.

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

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        node-version: [16, 18, 20]
        exclude:
          - os: windows-latest
            node-version: 16

الوصول إلى متغيرات المصفوفة

يمكنكم، ضمن خطوات مهمتكم، الوصول إلى قيم متغيرات المصفوفة الحالية باستخدام الصيغة ${{ matrix.variable_name }}. ويُعدّ ذلك ضروريًا لإعداد الأدوات أو تشغيل الأوامر الخاصة بكل تركيبة من تركيبات المصفوفة.

فمثلًا، يضبط ${{ matrix.os }} نظام التشغيل لبيئة التشغيل ديناميكيًا، بينما يضبط ${{ matrix.node-version }} إجراء إعداد Node.js.

تطبيقات عملية

تُعدّ بناءات المصفوفة مفيدة من أجل:

  • تطوير المكتبات: الاختبار باستخدام إصدارات متعددة من أحد التبعيات.
  • المشروعات متعددة اللغات: بناء المكونات المكتوبة بلغات أو باستخدام مُصرّفات مختلفة واختبارها.
  • التوافق مع المتصفحات: اختبار تطبيقات الويب عبر متصفحات مختلفة عند استخدام أداة تدعم ذلك.

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

تحدي بناء المصفوفة

لنفترض أن لديكم مسار عمل في GitHub Actions يستخدم استراتيجية المصفوفة. وقد عُرّفت المصفوفة كما يلي:

strategy:
  matrix:
    os: [ubuntu-latest, macos-latest]
    python-version: [3.8, 3.9]
    exclude:
      - os: macos-latest
        python-version: 3.8

كم مهمة ستنشئها إعدادات المصفوفة هذه؟

مراجعة: بناءات المصفوفة

أحسنتم! لقد تعلمتم كيفية استخدام بناءات المصفوفة في GitHub Actions.

  • تتيح لكم تشغيل المهام لمجموعات متعددة من المتغيرات (أنظمة التشغيل وإصدارات اللغات وغير ذلك).
  • تُعرّف باستخدام strategy.matrix داخل المهمة.
  • تضيف include تركيبات محددة، بينما تزيلها exclude.
  • يمكن الوصول إلى المتغيرات عبر ${{ matrix.variable_name }}.

تُعدّ بناءات المصفوفة أساسية لإجراء اختبارات شاملة وفعالة عبر بيئات متنوعة. واصلوا التدريب لإتقانها!

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

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

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

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

استخدموا استراتيجيات المصفوفات لتشغيل المهام بالتوازي عبر إصدارات متعددة من اللغات أو أنظمة التشغيل أو التهيئات. تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟

لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

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

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

هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟

نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

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

  1. عمليات البناء المصفوفية لبيئات متعددة
  2. تخزين الاعتماديات مؤقتًا لتسريع التنفيذ
  3. سير العمل والإجراءات القابلة لإعادة الاستخدام
  4. التنفيذ الشرطي واعتماديات المهام
← العودة إلى DevOps Bootcamp