سير العمل والإجراءات القابلة لإعادة الاستخدام
أنشئوا سير عمل وإجراءات مخصصة قابلة لإعادة الاستخدام واستفيدوا منها لتقسيم مساراتكم إلى وحدات وتعزيز الاتساق بين المستودعات.
سير العمل والإجراءات القابلة لإعادة الاستخدام درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
مقدمة إلى قابلية إعادة استخدام مسارات العمل
في تطوير البرمجيات الحديث، تُعدّ الكفاءة والاتساق عاملين أساسيين. وكلما نمت مشروعاتكم، ازدادت احتياجاتكم إلى الأتمتة.
تساعدكم مسارات العمل القابلة لإعادة الاستخدام والإجراءات المخصصة في GitHub Actions على تجنب تكرار الشيفرة، مما يجعل مسارات CI/CD لديكم أسهل صيانةً وأكثر متانة.
لماذا نعيد استخدام مسارات العمل؟
تخيلوا أن لديكم عدة تطبيقات تحتاج جميعها إلى خطوات البناء أو الاختبار أو النشر نفسها. ويؤدي نسخ شيفرة مسار العمل ولصقها إلى:
- التكرار: زيادة الشيفرة التي يجب صيانتها.
- عدم الاتساق: سهولة تفويت التحديثات عبر مسارات العمل المختلفة.
- مشكلات الصيانة: الحاجة إلى تحديث العديد من الملفات عند إجراء تغييرات.
تحل قابلية إعادة الاستخدام هذه المشكلات!
تعريف مسار عمل قابل لإعادة الاستخدام
مسار العمل القابل لإعادة الاستخدام هو مسار عمل كامل يمكن لمسارات عمل أخرى استدعاؤه. ويُخزّن في مستودعكم ويعمل كقالب.
لجعل مسار العمل قابلًا لإعادة الاستخدام، تستخدمون حدث workflow_call. ويخبر ذلك GitHub Actions بأن مسار العمل مخصص للاستدعاء، وليس للتشغيل بواسطة أحداث معتادة مثل push أو pull_request.
مثال على مسار عمل قابل لإعادة الاستخدام
إليكم مسار عمل بسيطًا قابلًا لإعادة الاستخدام يحاكي عملية بناء. احفظوه في .github/workflows/reusable-build.yml.
يعرّف هذا المسار مخرجًا باسم build_id ضمن output، ويمكن لمسارات العمل المستدعية استخدامه.
name: Reusable Build Component
on:
workflow_call:
outputs:
build_id:
description: "The ID of the build operation"
value: ${{ jobs.build.outputs.build_id }}
jobs:
build:
runs-on: ubuntu-latest
outputs:
build_id: ${{ steps.generate_id.outputs.id }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Generate build ID
id: generate_id
run: echo "id=$(date +%s)" >> "$GITHUB_OUTPUT"
- name: Simulate build
run: echo "Building project with ID ${{ steps.generate_id.outputs.id }}..."
استدعاء مسار عمل قابل لإعادة الاستخدام
لاستخدام مسار عمل قابل لإعادة الاستخدام، يستخدم مسار عمل آخر، يُسمى «المستدعي»، الكلمة المفتاحية uses، بطريقة مشابهة لاستخدام إجراء من GitHub.
تحددون مسار ملف مسار العمل القابل لإعادة الاستخدام داخل مستودعكم، أو حتى من مستودع آخر أو إصدار محدد.
مثال على مسار العمل المستدعي
يستدعي مسار العمل هذا، المحفوظ في .github/workflows/main-app-ci.yml، مسار العمل reusable-build.yml الخاص بنا.
لاحظوا كيفية وصوله إلى مخرج build_id من مسار العمل المستدعى باستخدام jobs.call-build.outputs.build_id.
name: Main App CI
on: [push]
jobs:
call-build:
uses: ./.github/workflows/reusable-build.yml
outputs:
build_id: ${{ jobs.call-build.outputs.build_id }}
deploy:
needs: call-build
runs-on: ubuntu-latest
steps:
- name: Deploy app
run: echo "Deploying app built with ID ${{ needs.call-build.outputs.build_id }}"
تمرير المدخلات إلى سير العمل القابلة لإعادة الاستخدام
لا تقتصر سير العمل القابلة لإعادة الاستخدام على كونها قوالب ثابتة؛ إذ يمكنها قبول المدخلات، مما يجعلها مرنة بدرجة كبيرة.
تحدّد المدخلات المتوقعة في القسم on: workflow_call: inputs: من سير العمل القابل لإعادة الاستخدام، مع تحديد نوعها، وما إذا كانت مطلوبة، ووصفها. ويمرّر سير العمل المستدعي هذه المدخلات باستخدام الكلمة المفتاحية with:.
سير عمل قابل لإعادة الاستخدام مع مدخلات
إليك ملف reusable-build.yml محدّثًا يقبل مدخلًا باسم target_env. يتيح ذلك تخصيص منطق البناء نفسه لبيئات مختلفة.
name: Reusable Build Component with Input
on:
workflow_call:
inputs:
target_env:
required: true
type: string
description: "The target environment for the build"
outputs:
build_id:
description: "The ID of the build operation"
value: ${{ jobs.build.outputs.build_id }}
jobs:
build:
runs-on: ubuntu-latest
outputs:
build_id: ${{ steps.generate_id.outputs.id }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Generate build ID
id: generate_id
run: echo "id=$(date +%s)" >> "$GITHUB_OUTPUT"
- name: Simulate build for ${{ inputs.target_env }}
run: echo "Building project for ${{ inputs.target_env }} with ID ${{ steps.generate_id.outputs.id }}..."
مثال على الاستدعاء باستخدام المدخلات
يمكن لسير عمل CI الرئيسي الآن استدعاء مكوّن البناء القابل لإعادة الاستخدام مرتين، مرةً لبيئة 'staging' وأخرى لبيئة 'production'، مع تمرير قيم مختلفة للمدخل target_env.
name: Main App CI with Input
on: [push]
jobs:
call-build-staging:
uses: ./.github/workflows/reusable-build-with-input.yml
with:
target_env: 'staging'
outputs:
build_id: ${{ jobs.call-build-staging.outputs.build_id }}
call-build-prod:
uses: ./.github/workflows/reusable-build-with-input.yml
with:
target_env: 'production'
outputs:
build_id: ${{ jobs.call-build-prod.outputs.build_id }}
سير العمل القابلة لإعادة الاستخدام مقابل الإجراءات المخصصة
على الرغم من أن كليهما يعزّز قابلية إعادة الاستخدام، فإن لكل منهما غرضًا مختلفًا:
- سير العمل القابلة لإعادة الاستخدام: تنسّق سلسلة من المهام. وتحدّد بنية سير عمل كاملة (مثل البناء والاختبار والنشر).
- الإجراءات المخصصة: تنفّذ مهمة واحدة محددة ضمن مهمة (مثل إعداد Node.js ونشر حزمة). وهي اللبنات الأساسية *داخل* خطوات المهمة.
تصوّر سير العمل على أنها وصفات، والإجراءات على أنها مكوّنات أو خطوات منفردة.
تحقق سريع
ما الفوائد الأساسية التالية لاستخدام سير العمل القابلة لإعادة الاستخدام في GitHub Actions؟
مراجعة: سير العمل والإجراءات القابلة لإعادة الاستخدام
استكشفنا كيف تساعد سير العمل القابلة لإعادة الاستخدام على جعل مسارات CI/CD أكثر نمطية.
- يُعرَّف هذا النوع من سير العمل باستخدام
workflow_call. - يمكنه قبول
inputsوتوفيرoutputs. - تستخدم مسارات العمل المستدعية الكلمة المفتاحية
uses. - تختلف هذه المسارات عن الإجراءات المخصصة، وهي لبنات بناء تنفّذ مهمة واحدة ضمن المهام.
تؤدي إعادة الاستخدام إلى أتمتة أكثر كفاءة واتساقًا وأسهل في الصيانة عبر مشاريعك.
الأسئلة الشائعة
هل درس «سير العمل والإجراءات القابلة لإعادة الاستخدام» مجاني؟
نعم — نص درس «سير العمل والإجراءات القابلة لإعادة الاستخدام» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «سير العمل والإجراءات القابلة لإعادة الاستخدام»؟
أنشئوا سير عمل وإجراءات مخصصة قابلة لإعادة الاستخدام واستفيدوا منها لتقسيم مساراتكم إلى وحدات وتعزيز الاتساق بين المستودعات. تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «سير العمل والإجراءات القابلة لإعادة الاستخدام»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- عمليات البناء المصفوفية لبيئات متعددة
- تخزين الاعتماديات مؤقتًا لتسريع التنفيذ
- سير العمل والإجراءات القابلة لإعادة الاستخدام
- التنفيذ الشرطي واعتماديات المهام