ميزات CI

في ما يلي بعض الميزات التي يمكنك العثور عليها في معظم أنظمة CI.

البيئة

من المهم اختيار وفهم بيئة الأجهزة والبرامج التي ينفّذ فيها النظام سير العمل. الاعتبارات المهمة لتطبيقات Android هي:

  • النظام الأساسي: Linux وMac وWindows وإصداراتها.
  • الذاكرة المتاحة: يؤدي إنشاء التطبيقات وتشغيل المحاكيات إلى استهلاك قدر كبير من ذاكرة الوصول العشوائي، وغالبًا ما يكون من الضروري تعديل المعلَمات مثل حجم كومة الذاكرة المؤقتة في JVM لتجنب أخطاء الخروج من الذاكرة.
  • البرامج المثبتة مسبقًا: توفر أنظمة CI عادةً صورًا تحتوي على مجموعة كبيرة من الأدوات المتاحة مسبقًا، مثل Java Development Kit (JDK) وAndroid Software Development Kit (حزمة تطوير البرامج Android) وأدوات الإنشاء والأنظمة الأساسية وأدوات المحاكاة.
  • بنية برنامج التشغيل ومجموعة التعليمات: ARM، x86. وهذا مهم عند استخدام أدوات المحاكاة.
  • متغيرات البيئة: يتم ضبط بعضها من خلال نظام CI (على سبيل المثال: ANDROID_HOME) ويمكنك ضبط القيمة الخاصة بك على، على سبيل المثال، تجنُّب بيانات اعتماد الترميز الثابت في سير عملك.

وثمة العديد من الجوانب الأخرى التي يجب مراعاتها، مثل عدد النوى المتوفّرة وما إذا كانت المحاكاة الافتراضية مفعّلة لتشغيل المحاكاة.

السجلّات والتقارير

عند فشل خطوة، يرسل إليك نظام CI إشعارًا ولا يسمح لك عادةً بدمج التغيير. يمكنك البحث عن الأخطاء في السجلّات لمعرفة سبب المشكلة.

بالإضافة إلى ذلك، يعمل الإنشاء والاختبار على إنشاء تقارير يتم تخزينها كأدوات من هذا الإصدار تحديدًا. اعتمادًا على نظام CI، يمكنك استخدام المكوّنات الإضافية لتصور نتائج تلك التقارير.

أوقات تشغيل ذاكرة التخزين المؤقت وCI

تستخدم أنظمة CI ذاكرة تخزين مؤقت لإصدار لتسريع العملية. في أبسط صورها، تحفظ هذه الخدمة جميع ملفات ذاكرة التخزين المؤقت لنظام Gradle بعد إنشاء ناجح واستعادتها قبل إنشاء جديد. يعتمد هذا على ميزة ذاكرة التخزين المؤقت لإصدار Gradle ويجب تفعيلها في مشروعك.

تتضمن بعض الطرق لتحسين أوقات التشغيل والموثوقية:

  • الوحدات: يتم تحديد الوحدات التي تأثرت بالتغيير وإنشائها واختبارها فقط.
  • تخطّي ذاكرات التخزين المؤقت: إذا كان الإصدار يتضمن نصوصًا برمجية عدّلها المطوّر، يمكنك تجاهل ذاكرات التخزين المؤقت للإصدار. أصبح التصميم من الصفر أكثر أمانًا.
  • الاختبارات المفرغة: الاختبارات المُعدّة خصوصًا، فقد يكون من المفيد تقسيم الاختبارات عبر أجهزة متعددة. ويعتمد ذلك على مشغِّل Android وأجهزة Gradle المُدارة وFirebase Test Lab.
  • إصدارات Shaard: يمكنك تقسيم الإصدار على عدة مثيلات للخادم.
  • ذاكرة التخزين المؤقت عن بُعد: يمكنك أيضًا استخدام ذاكرة التخزين المؤقت عن بُعد في Gradle.

إعادة محاولة إجراء الاختبارات التي تعذّر إجراؤها

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

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

تعذَّر إتمام العملية.

الإجراء

لم يستجِب المحاكي لثانية واحدة، ما أدّى إلى انتهاء المهلة.

إعادة إجراء الاختبار الذي تعذّر إكماله

تعذّر تشغيل المحاكي

إعادة تنفيذ المهمة بالكامل

حدث خطأ في الاتصال أثناء مرحلة التحقق من الرمز.

إعادة بدء سير العمل

من المهم تسجيل وتتبع أجزاء النظام غير المستقرة والاستثمار في الحفاظ على موثوقية وسرعة CI، والاعتماد فقط على إعادات المحاولة