Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

تثبيت وتكوين ودمج Local Emulator Suite

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

قم بتثبيت Local Emulator Suite

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

  • Node.js الإصدار 8.0 أو أعلى.
  • Java JDK الإصدار 11 أو أعلى.

لتثبيت 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
ايفنتارك 9299
قاعدة بيانات الوقت الفعلي 9000
سحابة Firestore 8080
سحابة التخزين 9199
استضافة Firebase 5000
حانة / فرعي 8085

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

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

{
  // 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"
    }
  }
}

تحديد خيارات Java

يعتمد محاكي Realtime Database ومحاكي Cloud Firestore وجزء من محاكي Cloud Storage على Java ، والتي يمكن تخصيصها باستخدام أعلام JVM عبر متغير البيئة JAVA_TOOL_OPTIONS .

على سبيل المثال ، إذا واجهت أخطاء تتعلق بمساحة كومة Java ، فيمكنك زيادة الحد الأقصى لحجم كومة Java إلى 4 جيجابايت:

export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start

يمكن تحديد علامات متعددة في علامات اقتباس مفصولة بمسافات ، مثل JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g" . تؤثر العلامات فقط على المكونات المستندة إلى Java للمحاكيات وليس لها أي تأثير على أجزاء أخرى من Firebase CLI ، مثل Emulator Suite UI.

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

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

يأمر وصف
المحاكيات: ابدأ ابدأ المحاكيات لمنتجات Firebase المكونة في firebase.json . ستستمر عمليات المحاكي في العمل حتى تتوقف بشكل صريح. emulators:start ستنزل start المحاكيات إلى ~ / .cache / firebase / emulators / إذا لم تكن مثبتة بالفعل.
علَم ديكريبتيون
--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 إلى مثيل مصادقة قيد التشغيل أو Cloud Firestore أو Realtime Database أو Cloud Storage. سيتم الكتابة فوق أي بيانات موجودة في ذاكرة المحاكي حاليًا.
برامج محاكاة: exec 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 إلى مثيل مصادقة قيد التشغيل أو Cloud Firestore أو Realtime Database أو Cloud Storage. سيتم الكتابة فوق أي بيانات موجودة في ذاكرة المحاكي حاليًا.
--ui اختياري. قم بتشغيل Emulator UI أثناء التنفيذ.

firebase emulators:exec بشكل عام أكثر ملاءمة لتدفقات عمل التكامل المستمر.

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

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

المحاكيات: export_directory

المصادقة أو Cloud Firestore أو Realtime Database أو محاكي التخزين السحابي . تصدير البيانات من مثيل 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 or emulators:exec command لتحديد المحاكيات التي يجب أن تبدأ. فمثلا،
    --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 في Emulator Hub.

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
  }
}

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

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

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

curl -X PUT localhost:4400/functions/disableBackgroundTriggers

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

{
  "enabled": false
}

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

curl -X PUT localhost:4400/functions/enableBackgroundTriggers

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

{
  "enabled": true
}

تكامل محاكي SDK

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

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

ذكري المظهر منصات آبل الويب واجهة مستخدم 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 7.2.0 5.0.0 4.2.0
سحابة التخزين 9.8.0 مستقبل مستقبل مستقبل
وظائف السحابة غير متاح غير متاح غير متاح غير متاح
الاستضافة غير متاح غير متاح غير متاح غير متاح
ملحقات غير متاح غير متاح غير متاح غير متاح