CI/CD with GitHub Actions & DevOps Pipelines · درس

إصدارات Canary باستخدام Actions

طبّقوا أنماط إصدارات Canary لطرح الميزات الجديدة تدريجيًا على مجموعة فرعية من المستخدمين، مع مراقبة الأداء والاستقرار.

الدرس 2 من 411 خطوة

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

مقدمة إلى إصدارات Canary

تخيلوا إطلاق ميزة أو تحديث جديد. ماذا لو احتوى على خطأ يؤثر في جميع المستخدمين؟ أمر مقلق، أليس كذلك؟

تساعد إصدارات Canary في تقليل هذا الخطر من خلال طرح التغييرات تدريجيًا على مجموعة صغيرة من المستخدمين أولًا. ويشبه ذلك إرسال «طائر الكناري في منجم الفحم» لاختبار الهواء قبل دخول الآخرين.

فوائد إصدارات Canary

توفر إصدارات Canary عدة فوائد أساسية:

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

Canary مقابل النشر الأزرق/الأخضر

قد تتذكرون عمليات النشر الأزرق/الأخضر، حيث تحوّلون الزيارات فورًا بين بيئتين متطابقتين.

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

آلية عمل إصدارات Canary

إليكم التدفق الأساسي لإصدار Canary:

  1. نشر الإصدار الجديد: يُنشر إصدار جديد من التطبيق على مجموعة صغيرة من الخوادم أو النسخ، إلى جانب الإصدار المستقر الحالي.
  2. توجيه قدر قليل من الزيارات: يُعدَّل موازن التحميل أو شبكة الخدمات لإرسال نسبة صغيرة (مثل 5-10%) من زيارات المستخدمين إلى الإصدار الجديد.
  3. المراقبة: تجري مراقبة أداء مجموعة Canary ومعدلات الأخطاء وملاحظات المستخدمين عن كثب.
  4. الترقية أو التراجع: إذا بدت الأمور جيدة، تُزاد الزيارات تدريجيًا، أو يُرقّى الإصدار الجديد إلى 100%. وإذا ظهرت مشكلات، يُجرى التراجع عن Canary وتُعاد الزيارات إلى الإصدار المستقر.

تنسيق العمليات باستخدام GitHub Actions

يمكن لـ GitHub Actions تنسيق عملية الإصدار التدريجي بأكملها. وهو لا يدير حركة المرور مباشرةً (فهذه مهمة البنية الأساسية لديكم)، لكنه يفعّل الخطوات التالية:

  • إنشاء تطبيقكم واختباره.
  • نشر الإصدار الجديد في بيئة تجريبية.
  • بدء تحويل حركة المرور عبر استدعاءات API إلى موازن التحميل أو شبكة الخدمات لديكم.
  • انتظار نتائج المراقبة أو الموافقات اليدوية.
  • ترقية الإصدار التجريبي أو تشغيل عملية التراجع.

مخطط سير عمل للإصدار التدريجي

قد يبدو سير عمل GitHub Actions النموذجي للإصدار التدريجي كما يلي:

name: Canary Deployment

on: push

jobs:
  build:
    # ... build and test steps ...

  deploy-canary:
    needs: build
    steps:
      - name: Deploy to Canary Group
        # ... call script/tool to deploy and shift 10% traffic ...

  monitor-canary:
    needs: deploy-canary
    # ... wait for monitoring/approval ...

  promote-or-rollback:
    needs: monitor-canary
    # ... conditionally promote to 100% or rollback ...

سيتفاعل كلٌّ من هذه الخطوات مع أدوات النشر لديكم.

محاكاة منطق الإصدار التدريجي

بينما ينسّق GitHub Actions العملية، غالبًا ما تُنفَّذ أوامر اتخاذ القرار والنشر الفعلية داخل البرامج النصية. إليكم مثالًا بلغة Python يحاكي منطق الإصدار التدريجي. تخيّلوا أن Action يشغّل هذا البرنامج النصي:

def deploy_version(version, traffic_percent):
    print(f"Deploying {version} to {traffic_percent}% traffic.")
    if traffic_percent == 100:
        print("Full rollout complete!")
    elif traffic_percent > 0:
        print("Canary deployed. Monitoring for stability...")
    else:
        print("Version removed (rollback).")

if __name__ == "__main__":
    print("--- Starting Canary Workflow ---")
    new_app_version = "v2.1-canary"
    stable_app_version = "v2.0"

    # Step 1: Deploy new version to 10% traffic
    deploy_version(new_app_version, 10)

    # Step 2: Simulate monitoring (e.g., waiting for metrics)
    print("Monitoring canary performance...")
    import random
    canary_successful = random.choice([True, True, True, False]) # 75% chance of success

    if canary_successful:
        print("Canary looks good! Proceeding to full rollout.")
        # Step 3a: Promote new version to 100%
        deploy_version(new_app_version, 100)
    else:
        print("Canary issues detected! Rolling back.")
        # Step 3b: Rollback to stable version
        deploy_version(stable_app_version, 100)
    print("--- Canary Workflow Finished ---")

مراقبة الإصدار التجريبي

تُعد المراقبة الفعّالة أمرًا بالغ الأهمية. ويمكن لسير عمل GitHub Actions الاندماج مع أنظمة المراقبة بعدة طرق:

  • استدعاءات API: الاستعلام من أدوات المراقبة (مثل Datadog وPrometheus) للحصول على المقاييس الرئيسية.
  • فحوصات السلامة: الاستعلام دوريًا عن نقاط نهاية سلامة التطبيق.
  • بوابات يدوية: إيقاف سير العمل مؤقتًا لإجراء مراجعة وموافقة بشرية.
  • فترات انتظار محددة زمنيًا: الانتظار لفترة محددة حتى تستقر المقاييس.

يستخدم سير العمل هذه الإشارات بعد ذلك لتحديد ما إذا كان ينبغي ترقية الإصدار أو التراجع عنه.

الترقية أو التراجع المشروط

بعد مرحلة المراقبة، يستخدم GitHub Actions المنطق الشرطي لتحديد الخطوة التالية. ويمكنكم استخدام عبارات if في تعريفات المهام أو الخطوات لديكم.

  promote-or-rollback:
    needs: monitor-canary
    if: success() && needs.monitor-canary.outputs.canary_ok == 'true'
    steps:
      - name: Promote Full Rollout
        # ... command to shift 100% traffic to new version ...

  rollback:
    needs: monitor-canary
    if: failure() || needs.monitor-canary.outputs.canary_ok == 'false'
    steps:
      - name: Rollback to Stable
        # ... command to shift 100% traffic to old version ...

يضمن ذلك الاستجابة التلقائية لأداء الإصدار التجريبي.

اختبار الإصدار التدريجي

لقد تعلّمتم فوائد الإصدارات التدريجية وآليات عملها. حان وقت اختبار مدى فهمكم.

مراجعة: الإصدارات التدريجية باستخدام Actions

تعلّمتم في هذا الدرس مفهوم الإصدارات التدريجية، وهي استراتيجية نشر فعّالة لطرح إصدارات البرامج الجديدة تدريجيًا على مجموعة فرعية من المستخدمين.

  • تقلّل الإصدارات التدريجية المخاطر وتوفر ملاحظات من العالم الفعلي.
  • ينسّق GitHub Actions خطوات الإنشاء والنشر في البيئة التجريبية والمراقبة والترقية أو التراجع المشروط.
  • تُعد المراقبة الفعّالة والمنطق الشرطي عنصرين أساسيين لنجاح مسارات الإصدارات التدريجية.

باستخدام الإصدارات التدريجية، يمكنكم النشر بثقة وتحكّم أكبر!

البدء مجانًا

تعلم CI/CD with GitHub Actions & DevOps Pipelines مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
12
الدروس
48

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

هل درس «إصدارات Canary باستخدام Actions» مجاني؟

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

ماذا ستتعلم في «إصدارات Canary باستخدام Actions»؟

طبّقوا أنماط إصدارات Canary لطرح الميزات الجديدة تدريجيًا على مجموعة فرعية من المستخدمين، مع مراقبة الأداء والاستقرار. تتمرن على CI/CD with GitHub Actions & DevOps Pipelines مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ CI/CD with GitHub Actions & DevOps Pipelines؟

لا تُشترط خبرة سابقة. CI/CD with GitHub Actions & DevOps Pipelines على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «إصدارات Canary باستخدام Actions»؟

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

هل يمكنني كتابة وتشغيل أكواد في درس CI/CD with GitHub Actions & DevOps Pipelines هذا؟

نعم. كل درس في CI/CD with GitHub Actions & DevOps Pipelines يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

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

  1. عمليات النشر الأزرق/الأخضر
  2. إصدارات Canary باستخدام Actions
  3. التراجع والتعافي من الكوارث
  4. علامات الميزات وعمليات الطرح التدريجي
← العودة إلى CI/CD with GitHub Actions & DevOps Pipelines