81 أسطر
3.2 KiB
Markdown
81 أسطر
3.2 KiB
Markdown
# بناء 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.
|