تثبيت "مجموعة أدوات المحاكاة المحلية" وإعدادها ودمجها

يمكن تثبيت "حزمة أدوات المحاكاة المحلية من Firebase" وإعدادها وبيئات الاختبار والنماذج الأوّلية، أي شيء بدءًا من جلسات النماذج الأوّلية لمرة واحدة إلى وسير عمل الدمج المستمر على مستوى الإنتاج.

تثبيت "مجموعة أدوات المحاكاة المحلية"

قبل تثبيت مجموعة المحاكيات، ستحتاج إلى ما يلي:

  • Node.js بالإصدار 16.0 أو إصدار أحدث.
  • الإصدار 11 من Java JDK أو إصدار أحدث

لتثبيت "حزمة المحاكي"، يُرجى اتّباع الخطوات التالية:

  1. ثبِّت واجهة سطر الأوامر Firebase. في حال لم يسبق لك تثبيت واجهة سطر الأوامر في Firebase تثبيته الآن. ستحتاج إلى الإصدار 8.14.0 أو إصدار أحدث من واجهة سطر الأوامر لاستخدام "مجموعة أدوات المحاكاة". يمكنك يمكنك التحقّق من الإصدار الذي ثبَّته باستخدام الأمر التالي:
    firebase --version
  2. يُرجى إعداد دليل العمل الحالي، إذا لم يسبق لك إجراء ذلك. كمشروع في Firebase، باتباع المطالبات التي تظهر على الشاشة لتحديد المنتجات المراد استخدامها:
    firebase init
  3. ابدأ إعداد "مجموعة أدوات المحاكاة". يؤدي هذا الأمر إلى بدء معالج تهيئة تتيح لك اختيار أدوات المحاكاة التي تهمّك، وتنزيل المحاكي المقابل والملفات الثنائية وتعيين منافذ المحاكي إذا لم تكن القيم الافتراضية مناسبة.
    firebase init emulators

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

إعداد "مجموعة أدوات المحاكاة"

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

  • تغيير منافذ المحاكي من خلال تشغيل firebase init emulators أو من خلال إجراء تعديل firebase.json يدويًا.
  • تغيير المسار إلى تعريفات "قواعد الأمان" من خلال تعديل firebase.json يدويًا.

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

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

إعدادات المنفذ

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

المحاكي المنفذ التلقائي
Authentication 9099
Emulator Suite UI 4000
Cloud Functions 5001
Eventarc 9299
Realtime Database 9000
Cloud Firestore 8080
Cloud Storage for Firebase 9199
Firebase Hosting 5000
Pub/Sub 8085

إعدادات رقم تعريف المشروع

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

من المفيد بشكل عام تعيين رقم تعريف مشروع واحد لجميع أدوات المحاكاة والاستدعاءات، وبالتالي فإن Emulator Suite UI، والمحاكيات المختلفة للمنتجات، وجميع فإن تشغيل مثيلات محددة من محاكي معين يمكن أن يتصل بشكل صحيح بجميع الحالات.

يتم إصدار تحذيرات بسبب "Local Emulator Suite" عند رصد عدة أرقام تعريف مشروع في بيئات العمل، على الرغم من أنه يمكنك إلغاء هذا السلوك من خلال تعيين تم إدخال مفتاح singleProjectMode للوصول إلى false في firebase.json.

يمكنك مراجعة بيانات أرقام تعريف المشروع بحثًا عن حالات عدم التطابق في:

  • المشروع التلقائي في سطر الأوامر: بشكل افتراضي، سيتضمن معرف المشروع عند بدء التشغيل من المشروع المحدد باستخدام firebase init أو firebase use لعرض قائمة المشاريع (ومعرفة المشروع الذي تم اختياره) استخدام firebase projects:list.
  • اختبارات وحدة القواعد: غالبًا ما يتم تحديد رقم تعريف المشروع في الطلبات على القواعد طريقة مكتبة اختبار الوحدات initializeTestEnvironment أو initializeTestApp.
  • علامة سطر الأوامر --project اجتياز واجهة سطر الأوامر Firebase تلغي العلامة --project المشروع التلقائي. يجب التأكّد من أنّ قيمة تتطابق العلامة مع رقم تعريف المشروع في اختبارات الوحدات وإعداد التطبيق.

تحقَّق أيضًا من عمليات ضبط رقم تعريف المشروع الخاصة بالنظام الأساسي والتي ضبطتها أثناء ضبط أنظمة Apple الأساسية، مشاريع Android والويب.

ضبط قواعد الأمان

ستتولى أدوات المحاكاة إعداد "قواعد الأمان" من 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": {
    "singleProjectMode": false, // do not warn on detection of multiple project IDs
    "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 for Firebase" إلى لغة Java التي يمكن تخصيصها مع علامات JVM عبر متغير البيئة JAVA_TOOL_OPTIONS.

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

export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start

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

أدوات محاكاة بدء التشغيل

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

الطلب الوصف
محاكيات:بدء بدء المحاكيات لمنتجات Firebase التي تم إعدادها في firebase.json. وسيستمر تشغيل عمليات المحاكاة إلى أن يتم إيقافها بشكل صريح. إجراء المكالمات سينزّل emulators:start أدوات المحاكاة إلى ~/.cache/firebase/emulators/ في حال فهي غير مثبتة بالفعل.
إبلاغ الوصف
--only اختياري. الحدّ المسموح به وتبدأه المحاكيات. أدخِل قائمة مفصولة بفواصل بأسماء المحاكيات، مع تحديد أحدها المزيد من "auth" أو "database" أو "firestore" أو "الدوال" أو "host" أو "pubsub"
--inspect-functions debug_port اختياري. الاستخدام مع محاكي Cloud Functions لتفعيل تصحيح أخطاء نقاط الإيقاف للدوال في القيمة المحدّدة المنفذ (أو المنفذ التلقائي 9229 إذا تم حذف الوسيطة). لاحظ أنه عندما يتم يتم تبديل المحاكي Cloud Functions إلى وضع تنفيذ تسلسلي خاص يتم فيه تنفيذ الدوال في عملية واحدة، ترتيب (FIFO) متسلسل؛ فإن ذلك يبسط تصحيح أخطاء الدالة، على الرغم من أن سلوك عن التنفيذ المتوازٍ للدوال في السحابة الإلكترونية والذي يختلف عن العمليات المتعددة العمليات.
--export-on-exit= اختياري. الاستخدام مع Authentication أو Cloud Firestore أو Realtime Database أو المحاكي Cloud Storage for Firebase. توجيه المحاكي(المحاكيات) لتصدير البيانات إلى الدليل عند حدوث إيقاف التشغيل، على النحو الموضَّح في 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 اختياري. الاستخدام مع Authentication أو Cloud Firestore أو Realtime Database أو المحاكي Cloud Storage for Firebase. استيراد البيانات المحفوظة باستخدام خيار بدء التشغيل في --export-on-exit أو emulators:export الأمر إلى Authentication أو Cloud Firestore أو Realtime Database قيد التشغيل أو مثيل المحاكي Cloud Storage for Firebase أي بيانات متوفّرة حاليًا في ذاكرة المحاكي سيتم المبالغة فيه.
emulatory:exec scriptpath يمكنك تشغيل النص البرمجي على scriptpath بعد بدء محاكيات منتجات Firebase تم إعداده في firebase.json. ستتوقف عمليات المحاكاة تلقائيًا عند انتهى تشغيل النص البرمجي.
إبلاغ الوصف
--only اختياري. الحدّ المسموح به وتبدأه المحاكيات. أدخِل قائمة مفصولة بفواصل بأسماء المحاكيات، مع تحديد أحدها المزيد من "firestore" أو "database" أو "الدوال" أو "host" أو "pubsub".
--inspect-functions debug_port اختياري. الاستخدام مع محاكي Cloud Functions لتفعيل تصحيح أخطاء نقاط التوقف للدوال في المنفذ المحدد (أو المنفذ التلقائي 9229 إذا تم حذف الوسيطة). لاحظ أنه عندما العلامة، ينتقل المحاكي Cloud Functions إلى نوع تسلسلي خاص وضع التنفيذ الذي يتم فيه تنفيذ الدوال في عملية واحدة، ترتيب (FIFO) متسلسل؛ فإن ذلك يبسط تصحيح أخطاء الدالة، على الرغم من أن سلوك عن التنفيذ المتوازٍ للدوال في السحابة الإلكترونية والذي يختلف عن العمليات المتعددة العمليات.
--export-on-exit= اختياري. الاستخدام مع Authentication أو Cloud Firestore أو Realtime Database أو المحاكي Cloud Storage for Firebase. توجيه المحاكي(المحاكيات) لتصدير البيانات إلى الدليل عند حدوث إيقاف التشغيل، على النحو الموضَّح في 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 اختياري. الاستخدام مع Authentication أو Cloud Firestore أو Realtime Database أو المحاكي Cloud Storage for Firebase. استيراد البيانات المحفوظة باستخدام خيار بدء التشغيل في --export-on-exit أو emulators:export الأمر إلى Authentication أو Cloud Firestore أو Realtime Database قيد التشغيل أو مثيل المحاكي Cloud Storage for Firebase أي بيانات متوفّرة حاليًا في ذاكرة المحاكي فسيتم استبداله.
--ui اختياري. شغِّل واجهة مستخدم المحاكي أثناء التنفيذ.

تكون الطريقة firebase emulators:exec بشكل عام أكثر ملاءمةً وسير عمل الدمج المستمر.

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

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

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

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

ويمكنك توجيه الأجهزة المحاكية إلى تصدير البيانات تلقائيًا عند إيقافها نهائيًا باستخدام --export-on-exit علامة موضّحة أعلاه

الدمج مع نظام CI

تشغيل صور مجموعة المحاكيات المضمّنة في الحاوية

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

هناك بعض المشاكل التي يجب أخذها في الاعتبار:

  • يتم تثبيت ملفات JAR وتخزينها مؤقتًا في ~/.cache/firebase/emulators/.

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

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

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

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

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

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

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

عرض قائمة بمحاكيات التشغيل

لإدراج أدوات المحاكاة قيد التشغيل حاليًا، أرسِل طلب GET إلى /emulators. نقطة نهاية Eulator 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 قيد التشغيل في مُحاكي Cloud Functions أو Extensions.

لإيقاف مشغِّلات الدوال المحلية مؤقتًا، أرسِل طلب PUT إلى نقطة نهاية /functions/disableBackgroundTriggers في Emulator Hub.

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) للعميل

Android أنظمة Apple الأساسية الويب واجهة مستخدم Firebase
Android
واجهة مستخدم Firebase
iOS
واجهة مستخدم Firebase
الويب
Realtime Database 19.4 7.2.0 8.0.0 6.4.0 صيغة المستقبل لا ينطبق
Cloud Firestore 21.6.0 7.2.0 8.0.0 6.4.0 صيغة المستقبل لا ينطبق
Authentication 20.0.0 7.0.0 8.0.0 7.0.0 صيغة المستقبل 4.7.2
Cloud Storage for Firebase 20.0.0 8.0.0 8.4.0 7.0.0 11.0.0 لا ينطبق
Cloud Functions 19.1.0 7.2.0 8.0.0 لا ينطبق غير متاح غير متاح
Hosting غير متاح غير متاح غير متاح غير متاح غير متاح غير متاح
Extensions غير متاح غير متاح غير متاح غير متاح غير متاح لا ينطبق

مدى توفُّر حزمة تطوير البرامج (SDK) للمشرف

العقدة Java Python انتقال
Realtime Database 8.6.0 6.10.0 2.18 صيغة المستقبل
Cloud Firestore 8.0.0 6.10.0 3.0.0 1.0.0
Authentication 9.3.0 7.2.0 5.0.0 4.2.0
Cloud Storage for Firebase 9.8.0 صيغة المستقبل صيغة المستقبل صيغة المستقبل
Cloud Functions لا ينطبق غير متاح غير متاح غير متاح
Hosting غير متاح غير متاح غير متاح غير متاح
Extensions غير متاح غير متاح غير متاح لا ينطبق