كل الوحدات ما CI/CD GitHub Actions التسليم المستمر بوابة الدمج English

خط أنابيب CI/CD

اختبِر، وابنِ، وبوّب على الطيّار الآلي — كل دفعٍ يُفحص تلقائيًّا قبل أن يكسر شيئًا.

الوحدة 9 · GitHub Actions، عبورًا إلى مختبر DevOps.

متوسّط CI/CD يتضمّن مختبرًا ~50 دقيقة

ماذا ستتعلّم

  • ما الذي يعنيه التكامل المستمر والتسليم المستمر فعلًا
  • كتابة سير عمل GitHub Actions يعمل عند كل دفع
  • تشغيل تدقيقك واختباراتك وبنائك تلقائيًّا — بوابات الوحدتين 6–7، مفروضةً الآن
  • بناء صورة Docker في CI لتبقى جاهزةً للنشر دائمًا
  • مختبر عملي: ادفع إلى GitHub وشاهد خطّك يخضرّ

المتطلبات المسبقة: الوحدة 8، وحساب GitHub مجاني. تعمّق: مختبر DevOps: CI/CD.

ما CI/CD فعلًا

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

المصطلحالمعنى المبسّط
CI (تكامل مستمر)كل دفعٍ يُدقَّق ويُختبَر ويُبنى تلقائيًّا.
CD (تسليم مستمر)عمليات البناء الناجحة تُغلَّف تلقائيًّا — واختياريًّا، تُنشَر.
سير العمل (Workflow)ملف YAML يصف الخطوات المطلوب تشغيلها.
المُشغّل (Runner)الجهاز النظيف الذي تُشغّله GitHub لسير عملك.

لماذا هو الملاءمة المثلى لشيفرة الذكاء الاصطناعي

قد يُدخِل الذكاء الاصطناعي كسرًا دقيقًا في أيّ لحظة. CI يلتقطه عند الدفع التالي مباشرةً، على جهازٍ ليس «جهازك» — فلا يصل «يعمل لديّ» إلى أحدٍ آخر.

سير عمل GitHub Actions

سير العمل ملف YAML واحد في .github/workflows/. هذا يشغّل بواباتك عند كل دفع:

# .github/workflows/ci.yml name: CI on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: 20 } - run: npm ci - run: npm run lint - run: npm test - run: npm run build

الملف ذاته الذي ستراه في مختبر DevOps

وحدة CI/CD في مختبر DevOps وsample-app/.github/workflows/ci.yml فيها تستخدمان هذا النمط بالضبط، موسَّعًا ببناء Docker ودفعه. دع المساعد يصوغ سير عملك — ثم اقرأه، فسير العمل شيفرةٌ أيضًا.

من التكامل إلى التسليم

ما إن يخضرّ CI حتى يأخذ CD الخطوة التالية: يبني صورة الحاوية من الوحدة 8 وينشرها إلى سجلّ، فيوجد أثرٌ قابل للنشر لكل إيداعٍ ناجح. النشر التلقائي الكامل يأتي في الوحدة 10 — هنا نتأكّد أن الصورة مبنيّةٌ وجاهزةٌ دائمًا.

# extra CD step: build + push the image on main - run: docker build -t ghcr.io/OWNER/snippet-vault-api ./api - run: docker push ghcr.io/OWNER/snippet-vault-api

اجعل CI بوابةً إلزامية

المكسب: فعّل حماية الفرع كي لا يستطيع طلب دمجٍ الدخول إلى main ما لم ينجح CI. الآن بوابات الوحدتين 6–7 ليست اقتراحًا — بل تفرضها المنصّة، لك ولأيّ متعاونٍ مستقبليّ (بشرًا كان أو ذكاءً اصطناعيًّا).

الحلقة تُغلَق

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

مختبر عملي: خطّك يخضرّ

ستدفع الخزنة إلى GitHub، وتضيف سير عمل CI يشغّل بواباتك عند كل دفع، وتشاهده ينجح — ثم تُثبت أنه يحجب كسرًا.

ما تحتاجه

مستودع snippet-vault المحوسَب من الوحدة 8 وحساب GitHub مجاني.

1

ادفع إلى GitHub

أنشئ مستودعًا جديدًا على GitHub، ثم:

git remote add origin https://github.com/YOU/snippet-vault.git git push -u origin main
2

أضِف سير عمل CI

Create .github/workflows/ci.yml that, on push and pull_request, runs npm ci, npm run lint, npm test, and npm run build for the api. Use Node 20.

راجعه، وأودِعه، وادفعه.

3

شاهده يعمل

افتح تبويب Actions على GitHub. يعمل سير عملك على المُشغّل النظيف — شاهد التدقيق والاختبار والبناء يخضرّون.

4

أثبِت أن البوابة تحجب كسرًا

على فرع، اكسِر اختبارًا عمدًا، وادفع، وافتح طلب دمج. يجب أن يحمرّ CI ويحجب الدمج. أصلحه، وادفع ثانيةً، وشاهده يخضرّ. ثم أضِف شارة حالة CI إلى README.md.

5

تأمّل

في REFLECTION.md: ما الذي التقطه CI وربّما كنت ستدمجه محليًّا؟ أودِع وادفع.

ما الذي تسلّمه

رابط مستودعك على GitHub. تحقّق من نفسك:

  • المستودع على GitHub مع تشغيل CI أخضر
  • ci.yml يشغّل التدقيق والاختبارات والبناء عند كل دفع
  • رأيت CI يحمرّ على إيداعٍ مكسور ويحجب طلب الدمج
  • شارة CI في README؛ وREFLECTION.md محدَّث

مسرد مصغّر

المصطلحالمعنى المبسّط
خط الأنابيبالتسلسل الآلي للفحوص/عمليات البناء التي يمرّ بها الدفع.
سير العململف YAML الذي يعرّف ذلك التسلسل (GitHub Actions).
المُشغّلالجهاز الطازج الذي ينفّذ سير العمل.
حماية الفرعقاعدةٌ تحجب الدمج ما لم تنجح الفحوص.
السجلّ (Registry)حيث تُخزَّن صور الحاويات المبنيّة (مثل GHCR).

الخلاصة وما التالي

صار لديك الآن

خطّ CI يشغّل بواباتك عند كل دفع، ويحجب الشيفرة المكسورة من الدمج، ويبني صورةً قابلة للنشر — معاييرك الهندسية، مفروضةً تلقائيًّا.

التالي: الوحدة 10 — النشر والبنية التحتية ككود. نأخذ تلك الصورة المبنيّة إلى الإنتاج، ونعرّف البنية التي تعمل عليها كشيفرةٍ خاضعةٍ للإصدارات — نشرٌ قابل للتكرار، بلا نقرٍ يدوي.

خط أنابيب CI/CD

الأهداف ما CI/CD GitHub Actions التسليم المستمر بوابة الدمج المختبر العملي المسرد الخلاصة