نظرة عامة
لبناء إضافة قوية لـ Discourse، قد يكون من الحكمة تضمين التكامل المستمر (CI) في إضافة أو مكوّن القالب الخاص بك. سيساعد هذا في اكتشاف الأخطاء مبكرًا ويقلل من احتمالية وجود أخطاء برمجية في الكود.
إعداد سير عمل CI باستخدام GitHub Actions لأتمتة عمليات البناء والاختبار هو نهج يتبعه فريق Discourse في جميع مكوناتنا، ونوصيكم بالقيام بالمثل.
الإعداد
لإضافة سير عمل آلي لأفعال GitHub للكشف عن الأخطاء، تحتاج إلى إنشاء مجلد .github/workflows في المجلد الجذري (root) لمستودعك.
داخل مجلد workflows يمكنك تحديد مجموعة من الأتمتات التي ستحتاج GitHub Actions إلى تشغيلها. على سبيل المثال، قد تكون هذه ملفات .yml للفحص (linting) والاختبارات.
لقد أنشأنا سير عمل قوالب لكل من الإضافات ومكونات القوالب والتي يمكنك الاستفادة منها. ترتبط هذه التعريفات بتعريفات “سير العمل القابلة لإعادة الاستخدام” الخاصة بنا هنا.
في مستودع الهيكل (skeleton) للقالب، على GitHub يمكنك النقر على زر Use this template لإنشاء مستودع إضافة/مكوّن قالب بناءً على القالب.
بديلًا عن ذلك، إذا كان لديك مشروع بالفعل وتريد إضافة سير العمل إليه، ما عليك سوى نسخ سير العمل ذي الصلة إلى مجلد .github/workflows/ في مستودعك:
الإضافات: discourse-plugin.yml
القوالب ومكونات القوالب: discourse-theme.yml
هذه القوالب مقفلة على إصدار رئيسي (major version) محدد من سير العمل القابلة لإعادة الاستخدام لدينا. التحسينات الصغيرة التي نجريها على سير العمل ستدخل حيز التنفيذ تلقائيًا في قالبك/إضافتك. بالنسبة للتغييرات التي تكسر التوافق (مثل إدخال أداة فحص جديدة)، سنقوم بترقية الإصدار الرئيسي لسير العمل القابلة لإعادة الاستخدام، وستحتاج إلى تحديث سير عملك للإشارة إلى الإصدار الجديد.
ها قد أُنجز! ببساطة، أنشئ التزامًا (commit) أو طلب سحب (PR) إلى مستودعك، وستكتشف GitHub Actions سير العمل تلقائيًا وتبدأ بتشغيل المهام.
ستعرض GitHub Actions تفصيلًا لكل اختبار، وبعد تشغيله ستشير إما إلى
أو
اعتمادًا على نجاح الاختبار أو فشله.
إذا فشل اختبار، فسيوفر لك النقر على التفاصيل بعض المعلومات حول ما الذي فشل، مما قد يمنحك أدلة حول ما الذي لا يعمل في كودك وما الذي يحتاج إلى إصلاح.
أضف اختباراتك الخاصة
لكي تعمل اختبارات الإضافات والمكونات بفعالية، من المهم أن تكتب اختبارات لإضافتك أو مكوّن القالب الخاص بك.
للتفاصيل حول كيفية كتابة اختبارات الواجهة الأمامية باستخدام EmberJS، راجع:
- Write acceptance tests and component tests for Ember code in Discourse
- Introduction - Testing - Ember Guides
لمزيد من التفاصيل حول كتابة اختبارات RSpec مع Rails، راجع:
أمثلة
لصالحك، اخترنا بعض الأمثلة لإضافات ومكونات قوالب لديها اختبارات قوية متكاملة:
| الإضافة / المكوّن | اختبارات جانب العميل | اختبارات جانب الخادم |
|---|---|---|
| Assign | ||
| Calendar | ||
| Reactions | ||
| Right Sidebar Blocks | ||
| Tag Icons | ||
| Table Builder |
هذا المستند مُدار بالإصدارات - اقترح تغييرات على github.
