Files
tripz-llc/docs/11-devops-cicd.md
T
HamzaandClaude Opus 4.8 95fea546f5 first commit: منصة Tripz — خطط كاملة + سكافولد باك إند NestJS/Docker
- docs/00-15: دراسة، بنية، محرك تعرفة، تسعير، نموذج استئجار، تكاملات، بيانات، realtime، خطة، devops، لاندنج، مخاطر، اصطلاحات سيرفر، تدفق نشر
- backend/: NestJS 11 على Docker (health + tenants + عزل tenant_id + بادئة tripz_ + Redis DB 3)
- apps/rider, apps/driver, dashboards/admin-web, dashboards/superadmin-web (هياكل)
- sync-to-server.sh + .gitignore

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 15:22:06 +03:00

3.0 KiB

11 — النشر والأتمتة (DevOps / CI-CD)

القاعدة الحاكمة: مستأجر جديد = ملف إعداد + أصول + أمر CI واحد. إن احتاج نشر مستأجر أكثر من يوم عمل، النموذج لا يتوسع.

البيئات

البيئة الغرض القاعدة
local تطوير Docker Compose
staging اختبار قبل النشر مشترك
production-shared باقات انطلاقة/علامة/أسطول+ نشرة مشتركة
production-sovereign-{tenant} باقة سيادة نسخة معزولة داخل الدولة

الباك إند

  • Docker لكل خدمة + docker-compose (Postgres/PostGIS، Redis، Martin، API، worker).
  • الهجرات تُشغَّل آلياً في خط النشر (لا synchronize).
  • الأسرار من متغيرات بيئة / Vault — لا في الكود.
  • وضع السيادة: نفس صور Docker، .env مختلف، تُنشر على خوادم المستأجر أو سحابة داخل الدولة.

الموبايل — flavors + fastlane

mobile/
├── flavors/<tenant>/
│   ├── config.json      # ألوان، اسم، bundle id، مفاتيح
│   ├── assets/          # أيقونة، سبلاش، لوجو
│   └── store/           # لقطات، وصف المتجر (تمايز ضد بند آبل 4.3)
├── fastlane/
│   ├── Fastfile         # lanes: build_flavor, deploy_ios, deploy_android
│   └── Appfile
  • أمر واحد: fastlane deploy tenant:<slug> يبني الراكب والسائق وينشرهما.
  • ما يتغير بالبناء فقط في الـ flavor؛ الباقي ديناميكي من GET /tenant/config.
  • درء رفض آبل 4.3: كل نكهة بأصول ومحتوى متجر مميّز؛ خيار «التطبيق الجامع» للباقة المجانية.

خط CI (GitHub Actions أو ما يعادله)

on PR:
  - lint + typecheck (backend + flutter analyze)
  - unit tests (jest + bloc_test)
  - اختبار عزل المستأجر (A لا يرى بيانات B)
  - build نكهة تجريبية (تحقق أن flavors يعمل)
on main:
  - migrations → staging → smoke tests
  - build جميع النكهات النشطة
on tag:
  - نشر production (shared) + fastlane للنكهات

المراقبة

  • تسجيل مركزي (structured logs) مع tenant_id وtrip_id في كل سطر.
  • صفحة حالة (status page) لكل مستأجر — جزء من عرض الدعم/SLA.
  • تنبيهات على: فشل الإسناد، تأخر الـ socket، طوابير BullMQ المتضخمة.

قواعد الإصدار

  • تحديث كل النكهات عند إصدار فلاتر → مؤتمت عبر fastlane (لا يدوي).
  • إصدار الباك إند semver؛ الهجرات متوافقة رجعياً حين أمكن (نشر بلا توقف).

← السابق: 10-roadmap · التالي: 12-landing-gtm