0Pricing
DevOps Bootcamp · درس

سير العمل عبر المستودعات

تعلّموا ربط سير العمل عبر مستودعات مختلفة لإدارة الاعتماديات وتنسيق عمليات النشر المعقدة.

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

مقدمة إلى مسارات سير العمل عبر المستودعات

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

يتيح تنسيق مسارات سير العمل عبر هذه المستودعات المتميزة تحقيق قدر أكبر من الوحداتية وفصل المسؤوليات. يستكشف هذا الدرس كيفية تحقيق ذلك باستخدام GitHub Actions.

لماذا تنسيق سير العمل عبر المستودعات؟

تقليديًا، تكون مسارات سير عمل GitHub Actions محصورة في مستودع واحد. ولكن ماذا لو احتجتم إلى:

  • بناء عنصر برمجي في مستودع وتشغيل عملية نشر في مستودع آخر؟
  • تشغيل التحديثات في مستودعات خدمات متعددة من خلال مستودع إعدادات مشترك؟
  • فرض سياسات أمان مُدارة في مستودع مركزي على جميع المستودعات الأخرى؟

توفر مسارات سير العمل عبر المستودعات حلًا لهذه السيناريوهات المعقدة.

ربط المستودعات: `repository_dispatch`

يوفّر GitHub Actions نوعًا خاصًا من الأحداث يُسمى repository_dispatch. ويعمل هذا النوع كخطاف ويب مخصص لمستودعات GitHub الخاصة بكم.

  • يرسل أحد مسارات سير العمل ("المرسل") طلب API إلى GitHub.
  • ينتظر مسار سير عمل آخر ("المستقبل") في مستودع مختلف هذا الحدث المحدد.

يتيح ذلك تشغيل مسارات سير العمل برمجيًا عبر مستودعات مختلفة.

إعداد سير عمل المستقبل

لاستقبال حدث repository_dispatch، يجب ضبط سير عمل في المستودع المستهدف للاستماع إليه. ويتم ذلك باستخدام الكلمة المفتاحية on:.

إليكم مثالًا على الشكل الذي قد يبدو عليه سير العمل في repo-B:

name: Receive Dispatch Event

on:
  repository_dispatch:
    types: [my-custom-event]

jobs:
  process-event:
    runs-on: ubuntu-latest
    steps:
      - name: Log event payload
        run: |
          echo "Event type: ${{ github.event.action }}"
          echo "Payload: ${{ toJSON(github.event.client_payload) }}"

فهم إعدادات المستقبل

في المثال السابق:

  • يخبر on: repository_dispatch: GitHub بالاستماع إلى هذا الحدث.
  • يحدد types: [my-custom-event] أن سير العمل هذا سيعمل فقط إذا كان نوع الحدث المُرسَل هو my-custom-event. ويمكنكم تعريف أنواع متعددة.
  • سيحتوي github.event.action على نوع الحدث، مثل my-custom-event.
  • يحتوي github.event.client_payload على أي بيانات مخصصة أُرسلت مع عملية الإرسال.

تشغيل الحدث: الإرسال من مستودع آخر

لتشغيل حدث repository_dispatch، يتعين عليكم إجراء طلب HTTP من نوع POST إلى GitHub API. ويمكن تنفيذ ذلك باستخدام curl أو GitHub CLI (gh cli) من داخل سير عمل آخر في GitHub Actions أو من خلال برنامج نصي.

المتطلبات الأساسية:

  • مالك المستودع المستهدف واسمه.
  • قيمة type لحدث يستمع إليه سير عمل الاستقبال.
  • قيمة client_payload لتمرير أي بيانات مخصصة.
  • رمز وصول شخصي إلى GitHub (PAT) بنطاق repo.

مثال: إرسال حدث باستخدام `gh cli`

إليكم سير عمل في repo-A يرسل حدثًا إلى repo-B. لاحظوا أننا نستخدم سرًا للرمز ونمرر قيمة client_payload.

name: Trigger Deploy Workflow

on:
  push:
    branches: [main]

jobs:
  dispatch:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Install GitHub CLI
        run: sudo apt-get update && sudo apt-get install gh -y

      - name: Dispatch event to repo-B
        env:
          GH_TOKEN: ${{ secrets.CROSS_REPO_PAT }}
        run: |
          gh api \
            --method POST \
            -H "Accept: application/vnd.github.v3+json" \
            /repos/YOUR_ORG/repo-B/dispatches \
            -f event_type='my-custom-event' \
            -f client_payload='{"ref":"${{ github.ref }}", "sha":"${{ github.sha }}"}'

تأمين الوصول بين المستودعات

يقتصر GITHUB_TOKEN الافتراضي الذي يوفره سير العمل على المستودع الذي يُشغَّل فيه سير العمل. ولتشغيل أحداث في مستودع *آخر*، تحتاجون إلى رمز ذي أذونات أوسع.

  • استخدموا رمز وصول شخصيًا (PAT) بنطاق repo.
  • خزّنوا هذا الرمز بوصفه سرًا للمستودع (مثل CROSS_REPO_PAT) في المستودع المُشغِّل.
  • لا تضعوا رموز PAT مباشرةً في ملفات سير العمل.

تمرير بيانات مخصصة باستخدام `client_payload`

إن client_payload كائن JSON يمكنكم تضمينه عند إرسال حدث. وهو ضروري لتمرير السياق أو البيانات من سير العمل المُشغِّل إلى سير العمل المستقبِل.

أمثلة على البيانات التي يمكنكم تمريرها:

  • قيمة SHA للالتزام أو اسم الفرع الذي شغّل عملية البناء.
  • البيئة المستهدفة (مثل "staging" أو "production").
  • رقم إصدار عنصر برمجي يراد نشره.

تذكّروا أن client_payload يظهر في سجلات سير العمل، لذا تجنبوا تضمين معلومات حساسة.

اختبار سريع حول عمليات سير العمل بين المستودعات

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

مراجعة: تنسيق العمليات عبر المستودعات

لقد تعلمتم بنجاح كيفية تنفيذ عمليات سير العمل بين المستودعات باستخدام repository_dispatch!

  • السبب: لإدارة التبعيات وتنسيق عمليات النشر المعقدة عبر مستودعات متعددة.
  • الطريقة: يجري سير عمل «المُرسِل» استدعاءً لواجهة API لدى GitHub، فيشغّل سير عمل «المستقبِل» في مستودع آخر.
  • العنصر الأساسي: نوع الحدث repository_dispatch وقيم types المطابقة في سير عمل الاستقبال.
  • البيانات: استخدموا client_payload لتمرير معلومات غير حساسة بين عمليات سير العمل.
  • الأمان: استخدموا دائمًا رمز PAT بنطاق repo، مخزنًا بوصفه سرًا، للوصول بين المستودعات.

تتيح هذه الميزة القوية إنشاء مسارات CI/CD مرنة للغاية ومنفصلة المكوّنات.

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

هل درس «سير العمل عبر المستودعات» مجاني؟

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

ماذا ستتعلم في «سير العمل عبر المستودعات»؟

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

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

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

كم من الوقت يستغرق درس «سير العمل عبر المستودعات»؟

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

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

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

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

  1. CI/CD للمستودعات أحادية البنية
  2. سير العمل عبر المستودعات
  3. إدارة سير العمل مركزيًا
  4. تصفية المسارات وعمليات البناء الانتقائية
← العودة إلى DevOps Bootcamp