# 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// │ ├── config.json # ألوان، اسم، bundle id، مفاتيح │ ├── assets/ # أيقونة، سبلاش، لوجو │ └── store/ # لقطات، وصف المتجر (تمايز ضد بند آبل 4.3) ├── fastlane/ │ ├── Fastfile # lanes: build_flavor, deploy_ios, deploy_android │ └── Appfile ``` - **أمر واحد:** `fastlane deploy tenant:` يبني الراكب والسائق وينشرهما. - ما يتغير بالبناء فقط في الـ 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](10-roadmap.md) · التالي: [12-landing-gtm](12-landing-gtm.md)