Continuous Delivery (CD): ما هو، الفرق عن Continuous Deployment

المؤلف: IT Sectr نُشر: 2026-04-11 وقت القراءة: 9 دق

Continuous Delivery (CD) هي ممارسة تطوير يكون فيها البرنامج دائمًا في حالة جاهزة للإصدار إلى الإنتاج. كل تغيير يمر عبر جميع مراحل الاختبار الآلي والتحقق، وبعد ذلك يمكن نشره بنقرة واحدة أو تلقائيًا. وفقًا لتقرير Google Cloud DORA Report, 2025، الفرق التي تمارس CD تصدر الإصدارات 208 مرات أكثر و106 مرات أسرع من الفرق ذات الأتمتة المنخفضة.

الرئيسية

  • Continuous Delivery (CD) — ممارسة يكون فيها الكود دائمًا جاهزًا للإصدار بعد الفحوصات الآلية
  • CD يتضمن CI ويضيف مراحل تحضير الإصدار والتوقيع والتسليم إلى متاجر التطبيقات
  • الموافقة اليدوية تميز Continuous Delivery عن Continuous Deployment (النشر التلقائي)
  • Fastlane هي الأداة القياسية لـ CD في تطوير التطبيقات المحمولة، تجرد التوقيع والنشر
  • خط أنابيب الإصدار يتضمن التحقق من البيانات الوصفية ولقطات الشاشة والوصف والمواد التسويقية

ما هو Continuous Delivery

Continuous Delivery (CD) هي امتداد لـ Continuous Integration تضيف أتمتة لجميع مراحل تحضير الإصدار: بناء النسخة الإصدارية، التوقيع بالشهادات، التعتيم، التحقق من البيانات الوصفية لمتجر التطبيقات والنشر في بيئة الاختبار. تم تقديم المصطلح من قبل Jez Humble وDavid Farley في كتاب «Continuous Delivery» (2010)، حيث قاما بصياغة الممارسة التي تمكن الفرق من جعل الإصدارات قابلة للتنبؤ ومنخفضة المخاطر.

تطور تسليم البرمجيات

قبل اعتماد CD، كانت الإصدارات حدثًا: كان الفريق يجتمع في غرفة، وينفذ قائمة مراجعة من 20 نقطة، ويشغل البرامج النصية يدويًا، ويأمل ألا ينكسر شيء. Continuous Delivery يحول الإصدار من حدث إلى عملية: يمكن شحن تغيير صغير في الكود إلى المستخدمين في دقائق، وليس أسابيع. Amazon وNetflix وEtsy كانت أول من اعتمد CD في العقد 2010 — واليوم هو المعيار لفرق المنتجات.

القيمة التجارية لـ CD

التسليم السريع للميزات هو ميزة تنافسية. إذا كان المنافس يصدر وظائف جديدة في أيام بينما تستغرق أنت شهورًا، يختار السوق المنافس. مقاييس DORA تظهر: فرق النخبة (مع CD) لديها وقت نشر أقل من ساعة واحدة، الفرق المنخفضة (بدون CD) — من أسبوع إلى شهر. CD أيضًا يقلل المخاطر بشكل جذري: التغييرات الصغيرة أصعب في كسر الأشياء من إصدار كبير ربع سنوي.

CD مقابل CI مقابل Continuous Deployment

المصطلحات CI وCD وContinuous Deployment غالبًا ما يتم الخلط بينها، ولكن هناك حدود واضحة بينها. فهم الاختلافات يساعد في تصميم خط الأنابيب بشكل صحيح واختيار مستوى الأتمتة الذي يتناسب مع نضج الفريق والمتطلبات التجارية.

Continuous Integration

CI هو الأساس الذي يُبنى عليه CD. يضمن CI أن كل commit يمر عبر البناء والاختبار. بدون CI، CD مستحيل: إذا لم يتم التحقق من الكود، لا يمكن إصداره. CI يتحقق من الصحة، CD يتحقق من الجاهزية للاستخدام التجاري.

Continuous Delivery

CD يضيف إلى CI مراحل بناء النسخة الإصدارية، التحقق من البيانات الوصفية، التوقيع والنشر في بيئة الاختبار أو متجر التطبيقات للاختبار التجريبي. الفرق الرئيسي — قرار الإصدار إلى الإنتاج يتخذه شخص (مدير، مالك المنتج). CD يجعل الإصدار «على بعد نقرة واحدة» — بسيط وآمن.

Continuous Deployment

Continuous Deployment هو أتمتة كاملة: كل تغيير يمر عبر جميع مراحل خط أنابيب CD يتم إرساله تلقائيًا إلى الإنتاج بدون موافقة يدوية. Continuous Deployment قابل للتطبيق لمنتجات SaaS والخدمات الويب، لكن نادرًا ما يستخدم في تطوير التطبيقات المحمولة بسبب سياسات متاجر التطبيقات (App Store Review، Google Play Review تتطلب إرسال يدوي).

الممارسةالأتمتةالإصدار إلى الإنتاجنموذجي لـ
CIبناء + اختباراتلاأي مشاريع
CDبناء + اختبارات + نسخة إصدارية + تسليمعند الطلبالتطبيقات المحمولة
Continuous Deploymentكاملة: بناء → اختبارات → تسليم → إصدارتلقائيًاخدمات الويب، SaaS

Continuous Delivery للتطبيقات المحمولة

CD للتطبيقات المحمولة له ميزات تميزه عن خطوط أنابيب الويب وال backend. الإصدارات المحمولة تمر عبر متاجر التطبيقات (App Store Review، Google Play Review)، مما يضيف حاجزًا زمنيًا وإجرائيًا. CD يؤتمت كل ما يمكن أتمتته قبل الإرسال للمراجعة لتعظيم فرصة اجتياز التحقق من المحاولة الأولى.

التحضير للنشر في Google Play

خط أنابيب CD لنظام Android يشمل: بناء AAB (Android App Bundle)، التوقيع بمفتاح إصدار، التعتيم عبر R8/ProGuard، التحقق من حجم APK وفئات multidex، إنشاء ملاحظات الإصدار. استخدام product flavors في Gradle (free/paid، dev/staging/prod) يسمح بإدارة تكوينات متعددة من خط أنابيب واحد.

التحضير للنشر في App Store

CD لنظام iOS يتطلب التوقيع بشهادات عبر Fastlane match، التحقق من مطابقة الأيقونات (متطلب App Store — 1024×1024 بكسل)، التحقق من صحة البيانات الوصفية (الاسم، الوصف، الكلمات المفتاحية)، التحقق من عدم وجود APIs خاصة. يتم التحقق الفني عبر altool --validate-app بدون رفع إلى App Store Connect، مما يوفر تغذية راجعة سريعة.

ruby
# Fastfile — خط أنابيب CD كامل لنظامي iOS وAndroid
platform :ios do
  desc "iOS CD — تحضير الإصدار والرفع إلى TestFlight"
  lane :deliver_to_testflight do
    capture_screenshots
    match(type: "appstore")
    build_app(
      scheme: "MyApp",
      export_method: "app-store",
      workspace: "MyApp.xcworkspace"
    )
    pilot(skip_waiting_for_build: true)
  end
end

platform :android do
  desc "Android CD — بناء AAB والرفع إلى Google Play Console"
  lane :deliver_to_internal do
    gradle(
      task: "bundleRelease",
      build_type: "Release",
      print_command: true
    )
    upload_to_play_store(
      track: "internal",
      skip_upload_metadata: true
    )
  end
end

Fastlane deliver_to_testflight يجمع لقطات الشاشة، يحصل على الشهادات عبر match، يبني IPA ويرفع إلى TestFlight. المسار deliver_to_internal لنظام Android يبني Release AAB عبر Gradle ويرفعه إلى المسار الداخلي لـ Google Play Console. كلا خطي الأنابيب يعملان من CI بعد اجتياز الاختبارات.

مكونات خط أنابيب CD

خط أنابيب CD يتكون من مراحل متتالية، كل منها يضيف ثقة بأن الإصدار جاهز للمستخدمين. تنقسم المراحل إلى تقنية (بناء، توقيع) ومنتجة (بيانات وصفية، لقطات شاشة، التحقق من الوصف). تخطي أي مرحلة يزيد من خطر رفض الإصدار من قبل متجر التطبيقات.

إدارة الإصدارات

مكون حاسم في CD هو إدارة الإصدارات التلقائية. زيادة الإصدار (versionCode وversionName لنظام Android، CFBundleVersion وCFBundleShortVersionString لنظام iOS) يتم بناءً على علامات Git أو الإصدار السابق في المتجر. Fastlane increment_version_number وأوامر Gradle (versionCode auto-increment) تؤتمت هذه الخطوة.

البيانات الوصفية للمتجر

Google Play Console وApp Store Connect يتطلبان: وصف التطبيق، الكلمات المفتاحية، الفئة، التقييم، روابط سياسة الخصوصية. CD يشمل التحقق من وجود وصحة البيانات الوصفية. Fastlane deliver وsupply يؤتمتان رفع الأوصاف ولقطات الشاشة والأيقونات مع البناء.

فحوصات البوابة

قبل الإرسال للمراجعة، يقوم خط الأنابيب بفحوصات البوابة: فحص حجم البناء (APK > 200 ميغابايت مرفوض من Google Play)، وجود جميع التعريب، عدم وجود رموز تصحيح في البناء الإصدار، فحص ملف mapping ProGuard لفك تشفير سجلات الأعطال. إذا فشل أي فحص — خط الأنابيب يحظر الإصدار.

الاختبار الآلي لـ CD

مستوى الثقة في CD يتناسب طرديًا مع جودة الاختبارات الآلية. إذا لم تكتشف الاختبارات الانحدار — يمكن للإصدار كسر الإنتاج، ويفقد الفريق الثقة في CD. CD للتطبيقات المحمولة يتطلب هرم اختبار ثلاثي المستويات مكيف لخصوصية المنصة.

اختبارات الوحدة

اختبارات الوحدة تتحقق من منطق الأعمال بشكل معزول. تغطية الكود يجب أن لا تقل عن 70% للوحدات الحرجة (المصادقة، المدفوعات، الشبكات). CI يشغل اختبارات الوحدة عند كل push، وإذا فشلت — خط أنابيب CD يُحظر حتى الإصلاح.

اختبارات التكامل

تتحقق من تفاعل المكونات: طبقة الشبكة مع API حقيقي (أو خادم mock)، قاعدة البيانات، نظام الملفات. اختبارات Room DAO لنظام Android، اختبارات Core Data لنظام iOS هي أمثلة على اختبارات التكامل. هي أبطأ من اختبارات الوحدة (1–5 دقائق) وتُنفذ في مرحلة CD، وليس CI عند كل commit.

اختبارات واجهة المستخدم ولقطات الشاشة

اختبارات لقطات الشاشة (snapshot testing) تقارن شاشات التطبيق بالصور المرجعية. إذا غيّر تغيير الكود واجهة المستخدم — يفشل الاختبار، ويتحقق المطور مما إذا كان التغيير متوقعًا. Android يدعم Roborazzi وPaparazzi، iOS — SnapshotTesting من Point-Free. اختبارات لقطات الشاشة تُنفذ قبل الإصدار كجزء من خط أنابيب CD.

أفضل ممارسات Continuous Delivery

تنفيذ Continuous Delivery يتطلب ليس فقط أدوات بل أيضًا تغيير في ثقافة الفريق. الممارسات أدناه مبنية على سنوات من الخبرة لفرق التطبيقات المحمولة من Google وSpotify وUber ومكيفة لمشاريع من أي حجم.

Feature Flags

كود الميزة الجديدة يُشحن إلى الإنتاج لكنه مخفي خلف علامة. Feature flags تسمح بنشر الكود قبل أن تكون الميزة جاهزة للمستخدمين وإيقافها فورًا في حالة المشاكل. المكتبات: LaunchDarkly، Firebase Remote Config، Unleash. Feature flags هي شرط إلزامي لـ CD في المشاريع المحمولة.

بيئة الاختبار

قبل الشحن إلى الإنتاج، يُنشر البناء في staging — بيئة مطابقة للإنتاج لكن ببيانات اختبار. مهندسو QA يتحققون من الميزة على بناء staging مثبت عبر TestFlight أو مسار Internal Testing. إذا اجتاز staging — يحصل البناء على الموافقة للإرسال للمراجعة في المتجر.

ملاحظات الإصدار وسجل التغييرات

CD يولّد تلقائيًا ملاحظات الإصدار بناءً على رسائل commit. Conventional Commits (feat:، fix:، chore:) وعلامات Git بتنسيق semantic versioning تسمح بتحليل تاريخ التغييرات. Fastlane changelog_from_git_commits يجمع التغييرات بين آخر علامتين ويُنسقها لمتجر التطبيقات.

المراقبة بعد الإصدار

CD لا ينتهي بالنشر — بعد الإصدار، تبدأ المراقبة: معدل الأعطال، معدل ANR لنظام Android، وقت بدء التشغيل، معدل فشل المدفوعات. إذا تجاوزت المقاييس الحدود الطبيعية — يجب على خط أنابيب CD التراجع تلقائيًا عن الإصدار أو إخطار الفريق. الأدوات: Firebase Crashlytics، Sentry، New Relic.

kotlin
// مثال على Feature Flag باستخدام Firebase Remote Config لـ CD
class FeatureManager(
    private val remoteConfig: FirebaseRemoteConfig
) {
    fun isNewCheckoutEnabled(): Boolean {
        return remoteConfig.getBoolean("new_checkout_enabled")
    }

    fun getRecommendedVersion(): String {
        return remoteConfig.getString("minimum_app_version")
    }
}

// الاستخدام في الكود
if (featureManager.isNewCheckoutEnabled()) {
    showNewCheckoutScreen()
} else {
    showLegacyCheckoutScreen()
}

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

ما الفرق بين Continuous Delivery وContinuous Deployment؟

Continuous Delivery (CD) يؤتمت تحضير الإصدار لكنه يترك قرار النشر لشخص. Continuous Deployment هو CD + إصدار تلقائي إلى الإنتاج بدون تدخل بشري. في تطوير التطبيقات المحمولة، Continuous Deployment مستحيل بسبب المراجعة الإلزامية لمتاجر التطبيقات.

كيف نضمن أن بناء الإصدار لا يختلف عن المختبر؟

استخدم نفس البناء لجميع المراحل: CI يختبر بناء debug، CD يبني بناء release من نفس المصادر. Fastlane build_app وGradle assembleRelease يعزلان تكوين البناء. بالإضافة، قم بتشغيل اختبارات smoke على بناء release في خط أنابيب CD قبل الإرسال إلى المتجر.

هل يمكن تنفيذ CD لتطبيق منشور بالفعل؟

نعم، CD يمكن تنفيذه في أي مشروع. ابدأ بـ أتمتة مرحلة واحدة — على سبيل المثال، بناء النسخة الإصدارية. ثم أضف التوقيع، ثم الرفع إلى TestFlight. قم بتوسيع خط الأنابيب تدريجيًا. المهم هو عدم محاولة أتمتة كل شيء دفعة واحدة: CD يُنفذ بشكل تكراري.

كيف ترتبط Feature Flags بـ CD؟

Feature flags هي مُمكّن رئيسي لـ CD. تسمح بشحن الكود إلى الإنتاج دون تفعيله للمستخدمين. إذا تبين أن الميزة غير مستقرة — يتم إيقاف العلامة دون إعادة بناء التطبيق. Firebase Remote Config وLaunchDarkly تتكاملان مع خط أنابيب CD وتُداران عبر واجهة ويب أو API.

كم مرة يجب عمل الإصدارات عند استخدام CD؟

مع CD، الفرق تصدر إصدارات أسبوعيًا أو كل أسبوعين. فرق النخبة من تقرير DORA تقوم بإصدارات متعددة يوميًا عبر Continuous Deployment (للجانب الخادم). للتطبيقات المحمولة، التردد الأمثل هو مرة كل 1–2 أسبوع: مراجعة App Store تستغرق 1–3 أيام، والإصدارات المتكررة لا تعطي المستخدمين وقتًا لملاحظة التغييرات.

الملخص

  • Continuous Delivery (CD) — أتمتة تحضير الإصدار مع الاحتفاظ بقرار النشر اليدوي إلى الإنتاج
  • CD مبني على CI ويضيف: بناء إصدار، توقيع، التحقق من البيانات الوصفية والتسليم إلى متجر التطبيقات
  • Fastlane هي الأداة القياسية لـ CD في تطوير التطبيقات المحمولة، تدعم Android وiOS من Fastfile واحد
  • Feature flags وبيئة staging — ممارسات إلزامية لـ CD آمن في المشاريع المحمولة
  • فحوصات البوابة (حجم البناء، التعريب، رموز debug) تحظر الإصدار إذا لم تستوفِ متطلبات المتجر
  • مقاييس DORA تثبت: الفرق مع CD تصدر 208 مرات أكثر وبمخاطر أقل
  • توصية: نفذ CD بشكل تكراري — ابدأ بالبناء التلقائي للنسخة الإصدارية، ثم أضف التوقيع، ثم الرفع إلى TestFlight

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا