اختبِر، وابنِ، وبوّب على الطيّار الآلي — كل دفعٍ يُفحص تلقائيًّا قبل أن يكسر شيئًا.
الوحدة 9 · GitHub Actions، عبورًا إلى مختبر DevOps.
متوسّط CI/CD يتضمّن مختبرًا ~50 دقيقةالمتطلبات المسبقة: الوحدة 8، وحساب GitHub مجاني. تعمّق: مختبر DevOps: CI/CD.
كنت تشغّل التدقيق والاختبارات والبناء يدويًّا. الخطّ يشغّلها عنك، تلقائيًّا، على جهازٍ نظيف، كلّما دفعت. ذاك الفرق بين «تذكّرت أن أفحص» و«يستحيل دمج شيفرةٍ مكسورة».
| المصطلح | المعنى المبسّط |
|---|---|
| CI (تكامل مستمر) | كل دفعٍ يُدقَّق ويُختبَر ويُبنى تلقائيًّا. |
| CD (تسليم مستمر) | عمليات البناء الناجحة تُغلَّف تلقائيًّا — واختياريًّا، تُنشَر. |
| سير العمل (Workflow) | ملف YAML يصف الخطوات المطلوب تشغيلها. |
| المُشغّل (Runner) | الجهاز النظيف الذي تُشغّله GitHub لسير عملك. |
قد يُدخِل الذكاء الاصطناعي كسرًا دقيقًا في أيّ لحظة. CI يلتقطه عند الدفع التالي مباشرةً، على جهازٍ ليس «جهازك» — فلا يصل «يعمل لديّ» إلى أحدٍ آخر.
سير العمل ملف YAML واحد في .github/workflows/. هذا يشغّل بواباتك عند كل دفع:
وحدة CI/CD في مختبر DevOps وsample-app/.github/workflows/ci.yml فيها تستخدمان هذا النمط بالضبط، موسَّعًا ببناء Docker ودفعه. دع المساعد يصوغ سير عملك — ثم اقرأه، فسير العمل شيفرةٌ أيضًا.
ما إن يخضرّ CI حتى يأخذ CD الخطوة التالية: يبني صورة الحاوية من الوحدة 8 وينشرها إلى سجلّ، فيوجد أثرٌ قابل للنشر لكل إيداعٍ ناجح. النشر التلقائي الكامل يأتي في الوحدة 10 — هنا نتأكّد أن الصورة مبنيّةٌ وجاهزةٌ دائمًا.
المكسب: فعّل حماية الفرع كي لا يستطيع طلب دمجٍ الدخول إلى main ما لم ينجح CI. الآن بوابات الوحدتين 6–7 ليست اقتراحًا — بل تفرضها المنصّة، لك ولأيّ متعاونٍ مستقبليّ (بشرًا كان أو ذكاءً اصطناعيًّا).
مواصفة → بناءٌ بالحلقة → اختبارات → بوابات → CI يفرضها عند كل دفع. الشيفرة المكسورة أو غير الآمنة لا تستطيع ماديًّا الوصول إلى فرعك الرئيس. ذاك المعيار الاحترافي، يشغّل نفسه.
ستدفع الخزنة إلى GitHub، وتضيف سير عمل CI يشغّل بواباتك عند كل دفع، وتشاهده ينجح — ثم تُثبت أنه يحجب كسرًا.
مستودع snippet-vault المحوسَب من الوحدة 8 وحساب GitHub مجاني.
أنشئ مستودعًا جديدًا على GitHub، ثم:
راجعه، وأودِعه، وادفعه.
افتح تبويب Actions على GitHub. يعمل سير عملك على المُشغّل النظيف — شاهد التدقيق والاختبار والبناء يخضرّون.
على فرع، اكسِر اختبارًا عمدًا، وادفع، وافتح طلب دمج. يجب أن يحمرّ CI ويحجب الدمج. أصلحه، وادفع ثانيةً، وشاهده يخضرّ. ثم أضِف شارة حالة CI إلى README.md.
في REFLECTION.md: ما الذي التقطه CI وربّما كنت ستدمجه محليًّا؟ أودِع وادفع.
رابط مستودعك على GitHub. تحقّق من نفسك:
ci.yml يشغّل التدقيق والاختبارات والبناء عند كل دفعREFLECTION.md محدَّث| المصطلح | المعنى المبسّط |
|---|---|
| خط الأنابيب | التسلسل الآلي للفحوص/عمليات البناء التي يمرّ بها الدفع. |
| سير العمل | ملف YAML الذي يعرّف ذلك التسلسل (GitHub Actions). |
| المُشغّل | الجهاز الطازج الذي ينفّذ سير العمل. |
| حماية الفرع | قاعدةٌ تحجب الدمج ما لم تنجح الفحوص. |
| السجلّ (Registry) | حيث تُخزَّن صور الحاويات المبنيّة (مثل GHCR). |
خطّ CI يشغّل بواباتك عند كل دفع، ويحجب الشيفرة المكسورة من الدمج، ويبني صورةً قابلة للنشر — معاييرك الهندسية، مفروضةً تلقائيًّا.
التالي: الوحدة 10 — النشر والبنية التحتية ككود. نأخذ تلك الصورة المبنيّة إلى الإنتاج، ونعرّف البنية التي تعمل عليها كشيفرةٍ خاضعةٍ للإصدارات — نشرٌ قابل للتكرار، بلا نقرٍ يدوي.