قم بتثبيت وتهيئة ودمج Local Emulator Suite

يمكن تثبيت Firebase Local Emulator Suite وتهيئته لنماذج أولية مختلفة وبيئات الاختبار ، أي شيء من جلسات النماذج الأولية لمرة واحدة إلى تدفقات عمل التكامل المستمر على نطاق الإنتاج.

قم بتثبيت Local Emulator Suite

قبل تثبيت Emulator Suite ، ستحتاج إلى:

لتثبيت Emulator Suite:

  1. تثبيت Firebase CLI . إذا لم يكن لديك بالفعل Firebase CLI المثبتة، تثبيته الآن . ستحتاج إلى إصدار CLI 8.14.0 أو أعلى لاستخدام Emulator Suite. يمكنك التحقق من الإصدار الذي قمت بتثبيت باستخدام الأمر التالي:
    firebase --version
  2. إذا لم تكن قد فعلت ذلك، تهيئة دليل العمل الحالي كمشروع Firebase، في أعقاب الشاشة المطالبات لتحديد أي منتجات الاستخدام:
    firebase init
  3. قم بإعداد Emulator Suite. يبدأ هذا الأمر معالج التكوين الذي يتيح لك تحديد برامج محاكاة الاهتمام وتنزيل ملفات المحاكي الثنائية المقابلة وتعيين منافذ المحاكي إذا كانت الإعدادات الافتراضية غير مناسبة.
    firebase init emulators

بمجرد تثبيت المحاكي ، لا يتم إجراء أي عمليات فحص للتحديث ولن تحدث تنزيلات تلقائية إضافية حتى تقوم بتحديث إصدار Firebase CLI الخاص بك.

تكوين مجموعة المحاكي

يمكنك تكوين اختياريا منافذ الشبكة ومحاكاة 'والمسار إلى تعريفات قواعد الأمن في firebase.json الملف:

  • الموانئ تغيير المحاكي عن طريق تشغيل firebase init emulators أو عن طريق تحرير firebase.json يدويا.
  • تغيير المسار إلى تعريفات قواعد الأمن عن طريق تحرير firebase.json يدويا.

إذا لم تقم بتكوين هذه الإعدادات ، ستستمع المحاكيات على منافذها الافتراضية ، وستعمل محاكيات Cloud Firestore و Realtime Database و Cloud Storage بأمان بيانات مفتوح.

أمر وصف
محاكيات البادئة بدء معالج تهيئة المحاكي. حدد المحاكيات المراد تثبيتها وحدد إعدادات منفذ المحاكي اختياريًا. init emulators هي غير مدمرة. قبول الإعدادات الافتراضية سيحافظ على تكوين المحاكي الحالي.

تكوين المنفذ

يرتبط كل محاكي بمنفذ مختلف على جهازك بقيمة افتراضية مفضلة.

محاكي المنفذ الافتراضي
المصادقة 9099
واجهة مستخدم جناح المحاكي 4000
وظائف السحابة 5001
قاعدة بيانات الوقت الفعلي 9000
سحابة Firestore 8080
سحابة التخزين 9199
استضافة Firebase 5000
حانة / فرعي 8085

تكوين قواعد الأمان

سوف محاكاة تأخذ تكوين قواعد الأمن من database ، firestore و storage مفاتيح التكوين في firebase.json .

{
  // Existing firebase configuration ...
  "database": {
    "rules": "database.rules.json"
  },
  "firestore" {
    "rules": "firestore.rules"
  },
  "storage" {
    "rules": "storage.rules"
  }

  // ...

  // Optional emulator configuration. Default
  // values are used if absent.
  "emulators": {
    "firestore": {
      "port": "8080"
    },
    "ui": {
      "enabled": true,      // Default is `true`
      "port": 4000          // If unspecified, see CLI log for selected port
    },
    "auth": {
      "port": "9099"
    },
    "pubsub": {
      "port": "8085"
    }
  }
}

بدء تشغيل برامج محاكاة

يمكنك بدء تشغيل المحاكيات حتى يتم إنهاؤها يدويًا ، أو للتشغيل لمدة نص اختبار معين ثم يتم إيقاف تشغيلها تلقائيًا.

أمر وصف
المحاكيات: ابدأ محاكاة بداية للمنتجات Firebase تكوينها في firebase.json . ستستمر عمليات المحاكي في العمل حتى تتوقف بشكل صريح. داعيا emulators:start سوف تحميل برامج محاكاة ل~ / .cache / firebase / محاكاة / إذا لم يتم تثبيتها بالفعل.
علم ديكريبتيون
--only اختياري. حدد برامج المحاكاة التي تبدأ. قدم قائمة مفصولة بفواصل لأسماء المحاكي ، مع تحديد واحد أو أكثر من "المصادقة" أو "قاعدة البيانات" أو "firestore" أو "الوظائف" أو "الاستضافة" أو "pubsub"
--inspect-functions debug_port اختياري. استخدم مع محاكي Cloud Functions لتمكين تصحيح أخطاء نقاط التوقف للوظائف في المنفذ المحدد (أو المنفذ الافتراضي 9229 إذا تم حذف الوسيطة). لاحظ أنه عند توفير هذه العلامة ، يتحول محاكي وظائف السحابة إلى وضع تنفيذ تسلسلي خاص يتم فيه تنفيذ الوظائف في عملية واحدة ، بترتيب تسلسلي (FIFO) ؛ يعمل هذا على تبسيط تصحيح أخطاء الوظائف ، على الرغم من اختلاف السلوك عن العمليات المتعددة والتنفيذ المتوازي للوظائف في السحابة.
--export-on-exit= اختياري. استخدم مع المصادقة أو Cloud Firestore أو Realtime Database أو Cloud Storage. إرشاد المضاهاة (ق) لتصدير البيانات إلى دليل عندما يحدث الاغلاق، كما هو موضح في emulators:export الأوامر. دليل التصدير يمكن تحديد مع هذا العلم: firebase emulators:start --export-on-exit=./saved-data . إذا --import يستخدم، والتخلف في مسار التصدير إلى نفسه؛ على سبيل المثال: firebase emulators:start --import=./data-path --export-on-exit . وأخيرا، إذا رغبت في ذلك، لتمرير مسارات الدليل مختلفة إلى --import و --export-on-exit الأعلام.
--import= import_directory اختياري. استخدم مع المصادقة أو Cloud Firestore أو Realtime Database أو Cloud Storage. حفظ بيانات الاستيراد باستخدام --export-on-exit خيار بدء التشغيل أو emulators:export الأمر إلى المصادقة على التوالي، سحابة Firestore، قاعدة البيانات في الوقت الحقيقي أو مثيل محاكي سحابة التخزين. سيتم الكتابة فوق أي بيانات موجودة في ذاكرة المحاكي حاليًا.
محاكاة: إكسيك scriptpath تشغيل البرنامج النصي في scriptpath بعد بدء محاكاة للمنتجات Firebase تكوينها في firebase.json . ستتوقف عمليات المحاكي تلقائيًا عند انتهاء تشغيل البرنامج النصي.
علم ديكريبتيون
--only اختياري. حدد برامج المحاكاة التي تبدأ. قدم قائمة مفصولة بفواصل لأسماء المحاكي ، مع تحديد واحد أو أكثر من "firestore" أو "database" أو "function" أو "hosting" أو "pubsub".
--inspect-functions debug_port اختياري. استخدم مع محاكي Cloud Functions لتمكين تصحيح أخطاء نقاط التوقف للوظائف في المنفذ المحدد (أو المنفذ الافتراضي 9229 إذا تم حذف الوسيطة). لاحظ أنه عند توفير هذه العلامة ، يتحول محاكي وظائف السحابة إلى وضع تنفيذ تسلسلي خاص يتم فيه تنفيذ الوظائف في عملية واحدة ، بترتيب تسلسلي (FIFO) ؛ يعمل هذا على تبسيط تصحيح أخطاء الوظائف ، على الرغم من اختلاف السلوك عن العمليات المتعددة والتنفيذ المتوازي للوظائف في السحابة.
--export-on-exit= اختياري. استخدم مع المصادقة أو Cloud Firestore أو Realtime Database أو Cloud Storage. إرشاد المضاهاة (ق) لتصدير البيانات إلى دليل عندما يحدث الاغلاق، كما هو موضح في emulators:export الأوامر. دليل التصدير يمكن تحديد مع هذا العلم: firebase emulators:start --export-on-exit=./saved-data . إذا --import يستخدم، والتخلف في مسار التصدير إلى نفسه؛ على سبيل المثال: firebase emulators:start --import=./data-path --export-on-exit . وأخيرا، إذا رغبت في ذلك، لتمرير مسارات الدليل مختلفة إلى --import و --export-on-exit الأعلام.
--import= import_directory اختياري. استخدم مع المصادقة أو Cloud Firestore أو Realtime Database أو Cloud Storage. حفظ بيانات الاستيراد باستخدام --export-on-exit خيار بدء التشغيل أو emulators:export الأمر إلى المصادقة على التوالي، سحابة Firestore، قاعدة البيانات في الوقت الحقيقي أو مثيل محاكي سحابة التخزين. سيتم الكتابة فوق أي بيانات موجودة في ذاكرة المحاكي حاليًا.
--ui اختياري. قم بتشغيل Emulator UI أثناء التنفيذ.

ل firebase emulators:exec الأسلوب هو عادة أكثر ملاءمة لسير العمل التكامل المستمر.

تصدير واستيراد بيانات المحاكي

يمكنك تصدير البيانات من المصادقة و Cloud Firestore و Realtime Database ومحاكيات التخزين السحابي لاستخدامها كمجموعة بيانات أساسية مشتركة وقابلة للمشاركة. يمكن استيراد هذه مجموعات البيانات باستخدام --import العلم، كما هو موضح أعلاه.

محاكاة: تصدير export_directory

المصادقة، سحابة Firestore، قاعدة البيانات في الوقت الحقيقي أو المحاكي سحابة التخزين. تصدير البيانات من مثيل Cloud Firestore أو Realtime Database أو Cloud Storage قيد التشغيل. المحدد export_directory سيتم إنشاء إذا لم يكن موجودا بالفعل. إذا كان الدليل المحدد موجودًا ، فستتم مطالبتك بتأكيد ضرورة الكتابة فوق بيانات التصدير السابقة. يمكنك تخطي هذه المطالبة باستخدام العلامة --force. دليل التصدير يحتوي على بيانات ملف البيان، firebase-export-metadata.json .

يمكنك إرشاد محاكاة لتصدير البيانات تلقائيا عندما اغلاق باستخدام --export-on-exit الأعلام المذكورة أعلاه.

التكامل مع نظام CI الخاص بك

تشغيل صور Emulator Suite الحاوية

يعد تثبيت وتكوين Emulator Suite مع الحاويات في إعداد CI نموذجي أمرًا سهلاً.

هناك بعض المشكلات التي يجب ملاحظتها:

  • يتم تثبيت ملفات JAR ومؤقتا في ~/.cache/firebase/emulators/ .

    • قد ترغب في إضافة هذا المسار إلى تكوين ذاكرة التخزين المؤقت CI لتجنب التنزيلات المتكررة.
  • إذا لم يكن لديك firebase.json الملف في المخزون الخاص بك، يجب إضافة وسيطة سطر الأوامر ل emulators:start أو emulators:exec الأوامر لتحديد التي يجب أن تبدأ محاكاة. على سبيل المثال،
    --only functions,firestore .

إنشاء رمز المصادقة (محاكي الاستضافة فقط)

إذا كان لديك سير العمل التكامل المستمر تعتمد على Firebase استضافة، فإنك سوف تحتاج للدخول باستخدام رمز لتشغيل firebase emulators:exec . لا تتطلب المحاكيات الأخرى تسجيل الدخول.

لإنشاء رمزي، قم بتشغيل firebase login:ci على البيئة المحلية. لا ينبغي أن يتم تنفيذ ذلك من نظام CI. اتبع التعليمات للمصادقة. يجب عليك فقط تنفيذ هذه الخطوة مرة واحدة لكل مشروع ، لأن الرمز المميز سيكون صالحًا عبر الإصدارات. يجب التعامل مع الرمز المميز مثل كلمة المرور ؛ تأكد من إبقائها سرية.

إذا كانت البيئة CI الخاص بك يسمح لك لتحديد متغيرات البيئة التي يمكن استخدامها في البرامج النصية البناء، ببساطة إنشاء متغير البيئة يسمى FIREBASE_TOKEN ، مع القيمة كونها الوصول رمز السلسلة. سوف Firebase CLI اختيار تلقائيا حتى FIREBASE_TOKEN متغير البيئة وسوف محاكاة تبدأ بشكل صحيح.

كحل أخير ، يمكنك ببساطة تضمين الرمز المميز في البرنامج النصي للبناء الخاص بك ، ولكن تأكد من أن الأطراف غير الموثوق بها ليس لديها إمكانية الوصول. لهذا النهج الثابت تلوينها، يمكنك إضافة --token "YOUR_TOKEN_STRING_HERE" إلى firebase emulators:exec الأوامر.

استخدم واجهة برمجة تطبيقات Emulator Hub REST

قائمة تشغيل المحاكيات

لسرد محاكاة قيد التشغيل حاليا، وإرسال GET طلب ل /emulators نقطة نهاية المحاكي محور.

curl localhost:4400/emulators

ستكون النتيجة كائن JSON يسرد جميع المحاكيات قيد التشغيل وتكوين المضيف / المنفذ ، على سبيل المثال:

{
  "hub":{
    "name": "hub",
    "host": "localhost",
    "port": 4400
  },
  "functions": {
    "name": "functions",
    "host": "localhost",
    "port": 5001
  }
  "firestore": {
    "name": "firestore",
    "host": "localhost",
    "port": 8080
  }
}

تمكين / تعطيل مشغلات وظيفة الخلفية

في بعض المواقف ، ستحتاج إلى تعطيل مشغلات الوظيفة المحلية مؤقتًا. على سبيل المثال قد ترغب في حذف كافة البيانات الموجودة في المحاكي سحابة Firestore دون إثارة أي onDelete الوظائف التي تعمل في وظائف منافس الغيمة.

لتعطيل مؤقتا مشغلات ظيفة المحلية، وإرسال PUT الطلب إلى /functions/disableBackgroundTriggers نقطة النهاية من المحاكي محور.

curl -X PUT localhost:4400/functions/disableBackgroundTriggers

ستكون النتيجة كائن JSON يوضح بالتفصيل الحالة الحالية.

{
  "enabled": false
}

لتمكين مشغلات ظيفة المحلية بعد أن تم تعطيل، وإرسال PUT الطلب إلى /functions/enableBackgroundTriggers نقطة النهاية من المحاكي محور.

curl -X PUT localhost:4400/functions/enableBackgroundTriggers

ستكون النتيجة كائن JSON يوضح بالتفصيل الحالة الحالية.

{
  "enabled": true
}

تكامل محاكي SDK

تشير الجداول في هذا القسم إلى المحاكيات التي تدعمها حزم SDK للعميل والمشرف. ومن المقرر المستقبل دعم وسائل المحاكي لكن لم تتوفر بعد.

توافر العميل SDK

ذكري المظهر iOS الويب واجهة مستخدم Firebase
ذكري المظهر
واجهة مستخدم Firebase
iOS
واجهة مستخدم Firebase
الويب
قاعدة بيانات الوقت الحقيقي 19.4.0 7.2.0 8.0.0 6.4.0 مستقبل غير متاح
سحابة Firestore 21.6.0 7.2.0 8.0.0 6.4.0 مستقبل غير متاح
المصادقة 20.0.0 7.0.0 8.0.0 7.0.0 مستقبل مستقبل
سحابة التخزين 20.0.0 8.0.0 8.4.0 غير متاح غير متاح غير متاح
وظائف السحابة 19.1.0 7.2.0 8.0.0 غير متاح غير متاح غير متاح
الاستضافة غير متاح غير متاح غير متاح غير متاح غير متاح غير متاح

توافر SDK المسؤول

العقدة جافا بايثون اذهب
قاعدة بيانات الوقت الفعلي 8.6.0 6.10.0 2.18.0 مستقبل
سحابة Firestore 8.0.0 6.10.0 3.0.0 1.0.0
المصادقة 9.3.0 مستقبل مستقبل مستقبل
سحابة التخزين 9.8.0 مستقبل مستقبل مستقبل
وظائف السحابة غير متاح غير متاح غير متاح غير متاح
الاستضافة غير متاح غير متاح غير متاح غير متاح