الملفات
ghaymah-exam-amirkasseb-sre/q3-cicd
2026-07-26 19:57:48 +03:00
..
2026-07-26 19:57:48 +03:00
2026-07-26 19:57:48 +03:00

بناء CI/CD Pipeline على غيمة

1. GitHub Actions Workflow

تم إنشاء GitHub Actions Workflow لأتمتة عملية بناء واختبار ونشر التطبيق على منصة Ghaymah Cloud.

يتم تشغيل الـ Workflow عند عمل push على فرعي main أو develop.

الخطوات الأساسية هي:

  1. تحميل الكود من GitHub.
  2. بناء Docker Image باستخدام Dockerfile.
  3. تشغيل Container بشكل مؤقت واختبار /health للتأكد من أن التطبيق يعمل.
  4. نشر التطبيق على بيئة Staging عند استخدام فرع develop.
  5. نشر التطبيق على Production عند استخدام فرع main بعد الحصول على موافقة يدوية.

يتم تخزين بيانات تسجيل الدخول الخاصة بـ Ghaymah داخل GitHub Secrets باستخدام:

  • GHAYMAH_EMAIL
  • GHAYMAH_PW

2. Manual Approval قبل Production

تم استخدام GitHub Environment باسم production لإضافة مرحلة موافقة يدوية قبل النشر.

عند وصول الكود إلى فرع main، يتم تنفيذ عملية البناء والاختبار أولاً، ثم يتوقف الـ Workflow وينتظر موافقة الشخص المسؤول.

بعد الموافقة فقط يتم تنفيذ عملية النشر على Production باستخدام Ghaymah CLI.

هذا يمنع نشر أي إصدار جديد على Production بشكل تلقائي دون مراجعة.


3. الفرق بين Staging و Production

Staging

بيئة تستخدم لاختبار التطبيق قبل نشره للمستخدمين الحقيقيين.

يتم نشر التغييرات عليها بشكل تلقائي من فرع develop، ويمكن استخدامها للتأكد من أن التطبيق يعمل بشكل صحيح.

Production

هي البيئة التي يستخدمها المستخدمون الحقيقيون.

يتم النشر إليها من فرع main، ويتم وضع Manual Approval قبل عملية النشر لتقليل احتمالية نشر إصدار يحتوي على أخطاء.

الـ Workflow يكون كالتالي:

develop → Build & Test → Staging

main → Build & Test → Manual Approval → Production


4. الربط مع Ghaymah CLI

يتم تثبيت Ghaymah CLI داخل GitHub Actions Runner باستخدام الأمر:

curl -sSL https://cli.ghaymah.systems/install.sh | bash

بعد ذلك يتم تسجيل الدخول باستخدام بيانات Ghaymah المخزنة في GitHub Secrets:

gy auth login

ثم يتم تنفيذ عملية النشر باستخدام:

gy resource app launch

يستخدم Ghaymah CLI ملف .ghaymah.json الموجود في جذر المشروع لمعرفة إعدادات التطبيق، مثل:

  • اسم التطبيق.
  • Project ID.
  • الـ Port المستخدم.
  • اسم Dockerfile.
  • إعدادات الوصول العام.

وبذلك يصبح GitHub Actions مسؤولاً عن أتمتة عملية CI/CD، بينما يقوم Ghaymah CLI بتنفيذ عملية النشر على منصة Ghaymah Cloud.