התקן, תצורה ושילוב של Local Emulator Suite

ניתן להתקין ולהגדיר את Firebase Local Emulator Suite עבור אב טיפוס וסביבות בדיקה שונות, החל מפגישות חד-פעמיות של יצירת אב טיפוס ועד זרימות עבודה מתמשכות של אינטגרציה בקנה מידה ייצור.

התקן את חבילת האימולטור המקומי

לפני התקנת חבילת האמולטור תזדקק ל:

  • Node.js גרסה 16.0 ומעלה.
  • Java JDK גרסה 11 ומעלה.

כדי להתקין את חבילת האמולטור:

  1. התקן את Firebase CLI . אם עדיין לא התקנת את Firebase CLI, התקן אותו כעת . תזדקק לגרסת CLI 8.14.0 ומעלה כדי להשתמש בחבילת האמולטור. אתה יכול לבדוק איזו גרסה התקנת באמצעות הפקודה הבאה:
    firebase --version
  2. אם עדיין לא עשית זאת, אתחל את ספריית העבודה הנוכחית כפרויקט Firebase, בצע את ההנחיות על המסך כדי לציין באילו מוצרים להשתמש:
    firebase init
  3. הגדר את חבילת האמולטור. פקודה זו מפעילה אשף תצורה המאפשר לך לבחור אמולטורים מעניינים, להוריד את הקבצים הבינאריים של האמולטור המתאימים ולהגדיר יציאות אמולטור אם ברירות המחדל אינן מתאימות.
    firebase init emulators

לאחר התקנת אמולטור, לא מבוצעות בדיקות עדכונים ולא יתרחשו הורדות אוטומטיות נוספות עד שתעדכן את גרסת Firebase CLI שלך.

הגדר את חבילת אמולטור

אתה יכול לחלופין להגדיר את יציאות הרשת והנתיב של האמולטורים להגדרות כללי אבטחה בקובץ firebase.json :

  • שנה יציאות אמולטור על ידי הפעלת firebase init emulators או על ידי עריכה ידנית firebase.json .
  • שנה את הנתיב להגדרות כללי אבטחה על ידי עריכה ידנית firebase.json .

אם לא תגדיר את ההגדרות הללו, האמולטורים יקשיבו ביציאות ברירת המחדל שלהם, ואמולטורים של Cloud Firestore, Realtime Database ו-Cloud Storage for Firebase יפעלו עם אבטחת נתונים פתוחה.

פקודה תיאור
אמולטורים של init הפעל אשף אתחול האמולטור. זהה אמולטורים להתקנה וציין אופציונלי הגדרות יציאת אמולטור. init emulators אינו הרסני; קבלת ברירות מחדל תשמר את תצורת האמולטור הנוכחית.

תצורת יציאה

כל אמולטור נקשר ליציאה אחרת במחשב שלך עם ערך ברירת מחדל מועדף.

אמולטור יציאת ברירת מחדל
אימות 9099
ממשק המשתמש של Emulator Suite 4000
פונקציות ענן 5001
Eventarc 9299
מסד נתונים בזמן אמת 9000
Cloud Firestore 8080
אחסון בענן עבור Firebase 9199
אירוח ב-Firebase 5000
פאב/סאב 8085

תצורת מזהה פרויקט

בהתאם לאופן שבו אתה מפעיל אמולטורים, אתה יכול להפעיל מופעים מרובים של אמולטור באמצעות מזהי פרויקט שונים של Firebase או מופעי אמולטור מרובים עבור מזהה פרויקט נתון. במקרים כאלה, מופעי אמולטור פועלים בסביבה נפרדת.

זה בדרך כלל נוהג טוב להגדיר מזהה פרויקט אחד עבור כל הפניות לאמולטור, כך שממשק המשתמש של Emulator Suite, אמולטורי מוצרים שונים וכל המופעים הפועלים של אמולטור מסוים יכולים לתקשר בצורה נכונה בכל המקרים.

Local Emulator Suite מנפיק אזהרות כשהיא מזהה מזהי פרויקטים מרובים בסביבה, אם כי אתה יכול לעקוף התנהגות זו על ידי הגדרת מפתח singleProjectMode ל- false ב- firebase.json שלך.

אתה יכול לבדוק את הצהרות מזהות הפרויקט עבור אי התאמה ב:

  • פרויקט ברירת המחדל בשורת הפקודה. כברירת מחדל, מזהה הפרויקט יילקח עם האתחול מהפרויקט שנבחר עם firebase init או firebase use . כדי להציג את רשימת הפרויקטים (ולראות איזה מהם נבחר) השתמש firebase projects:list .
  • בדיקות יחידת כללים. מזהה הפרויקט מצוין לעתים קרובות בקריאות לשיטות ספריית בדיקת הכללים של יחידת הכללים initializeTestEnvironment או initializeTestApp .
  • דגל שורת הפקודה --project . העברת דגל Firebase CLI --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

אמולטור מסדי הנתונים בזמן אמת, אמולטור Cloud Firestore וחלק מאמולטור Cloud Storage for Firebase מבוססים על Java, שניתן להתאים אישית עם דגלי JVM באמצעות משתנה הסביבה JAVA_TOOL_OPTIONS .

לדוגמה, אם אתה נתקל בשגיאות הקשורות ל-Java Heap Space, תוכל להגדיל את גודל הערימה המקסימלית של Java ל-4GB:

export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start

ניתן לציין מספר דגלים במירכאות מופרדות ברווחים, כמו JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g" . הדגלים משפיעים רק על הרכיבים מבוססי Java של האמולטורים ואין להם השפעה על חלקים אחרים של Firebase CLI, כגון Emulator Suite UI.

הפעל אמולטורים

אתה יכול להפעיל אמולטורים עד לסיום ידני, או לרוץ למשך סקריפט בדיקה ייעודי ואז לכבות אוטומטית.

פקודה תיאור
אמולטורים: התחל הפעל אמולטורים עבור מוצרי Firebase המוגדרים ב- firebase.json . תהליכי האמולטור ימשיכו לפעול עד שייעצרו במפורש. קריאת emulators:start תוריד את האמולטורים ל-~/.cache/firebase/emulators/ אם הם עדיין לא מותקנים.
דֶגֶל תיאור
--only אופציונאלי. הגבל אילו אמולטורים מתחילים. ספק רשימה מופרדת בפסיקים של שמות אמולטורים, תוך ציון אחד או יותר של 'auth', 'database', 'firestore', 'functions', 'hosting' או 'pubsub'.
--inspect-functions debug_port אופציונאלי. השתמש עם אמולטור Cloud Functions כדי לאפשר איתור באגים בנקודות עצירה של פונקציות ביציאה שצוינה (או ביציאת ברירת המחדל 9229 אם הארגומנט הושמט). שים לב שכאשר הדגל הזה מסופק, אמולטור Cloud Functions עובר למצב ביצוע סידורי מיוחד שבו פונקציות מבוצעות בתהליך בודד, בסדר רציף (FIFO); זה מפשט את ניפוי הפונקציות, אם כי ההתנהגות שונה מביצוע מקביל של פונקציות רב-תהליכיות בענן.
--export-on-exit= אופציונאלי. השתמש עם אמולטור האימות, Cloud Firestore, מסד נתונים בזמן אמת או 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 אופציונאלי. השתמש עם אמולטור האימות, Cloud Firestore, מסד נתונים בזמן אמת או Cloud Storage for Firebase. ייבא נתונים שנשמרו באמצעות אפשרות ההפעלה --export-on-exit או הפקודה emulators:export למופע הפעלה של Authentication, Cloud Firestore, Realtime Database או Cloud Storage for Firebase. כל הנתונים שנמצאים כרגע בזיכרון האמולטור יהיו מוגזמים.
emulators: exec scriptpath הפעל את הסקריפט ב- scriptpath לאחר הפעלת אמולטורים עבור מוצרי Firebase המוגדרים ב- firebase.json . תהליכי האמולטור ייפסקו אוטומטית כאשר הסקריפט יסיים לפעול.
דֶגֶל תיאור
--only אופציונאלי. הגבל אילו אמולטורים מתחילים. ספק רשימה מופרדת בפסיקים של שמות אמולטורים, תוך ציון אחד או יותר מ-'firestore', 'database', 'functions', 'hosting' או 'pubsub'.
--inspect-functions debug_port אופציונאלי. השתמש עם אמולטור Cloud Functions כדי לאפשר איתור באגים בנקודות עצירה של פונקציות ביציאה שצוינה (או ביציאת ברירת המחדל 9229 אם הארגומנט הושמט). שים לב שכאשר הדגל הזה מסופק, אמולטור Cloud Functions עובר למצב ביצוע סידורי מיוחד שבו פונקציות מבוצעות בתהליך בודד, בסדר רציף (FIFO); זה מפשט את ניפוי הפונקציות, אם כי ההתנהגות שונה מביצוע מקביל של פונקציות רב-תהליכיות בענן.
--export-on-exit= אופציונאלי. השתמש עם אמולטור האימות, Cloud Firestore, מסד נתונים בזמן אמת או 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 אופציונאלי. השתמש עם אמולטור האימות, Cloud Firestore, מסד נתונים בזמן אמת או 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 , כמתואר לעיל.

emulators: export export_directory

אימות, Cloud Firestore, מסד נתונים בזמן אמת או אמולטור Cloud Storage for Firebase . ייצא נתונים ממופע אמולטור של Cloud Firestore, Realtime Database או Cloud Storage for Firebase. ה- export_directory שצוין תיווצר אם היא עדיין לא קיימת. אם הספרייה שצוינה קיימת, תתבקש לאשר שיש לדרוס את נתוני הייצוא הקודמים. אתה יכול לדלג על הנחיה זו באמצעות הדגל --force . ספריית הייצוא מכילה קובץ מניפסט נתונים, firebase-export-metadata.json .

אתה יכול להורות לאמולטורים לייצא נתונים אוטומטית כאשר הם נסגרים באמצעות דגלי --export-on-exit המתוארים לעיל.

השתלב עם מערכת ה-CI שלך

הפעלת תמונות Emulator Suite מכולות

התקנה ותצורה של חבילת האמולטור עם מיכלים בהגדרת 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 CLI יאסוף אוטומטית את משתנה הסביבה FIREBASE_TOKEN והאמולטורים יתחילו כראוי.

כמוצא אחרון, אתה יכול פשוט לכלול את האסימון בסקריפט הבנייה שלך, אבל וודא שלצדדים לא מהימנים אין גישה. עבור גישה מקודדת קשה זו, אתה יכול להוסיף --token "YOUR_TOKEN_STRING_HERE" לפקודה firebase emulators:exec .

השתמש ב-Emulator Hub REST API

רשימת אמולטורים פועלים

כדי לרשום את האמולטורים הפועלים כעת, שלח בקשת 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 שפועלות באמולטורים של Cloud Functions או Extensions.

כדי להשבית זמנית מפעילי פונקציות מקומיות, שלח בקשת 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
}

שילובי Emulator SDK

הטבלאות בסעיף זה מציינות אילו אמולטורים נתמכים על ידי ערכות פיתוח של לקוח ו-Admin. עתיד אומר שתמיכת אמולטור מתוכננת אך עדיין לא זמינה.

זמינות SDK של לקוח

דְמוּי אָדָם פלטפורמות של אפל אינטרנט ממשק המשתמש של Firebase
דְמוּי אָדָם
ממשק המשתמש של Firebase
iOS
ממשק המשתמש של Firebase
אינטרנט
מסד נתונים בזמן אמת 19.4.0 7.2.0 8.0.0 6.4.0 עתיד לא
Cloud 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 עתיד 4.7.2
אחסון בענן עבור Firebase 20.0.0 8.0.0 8.4.0 7.0.0 11.0.0 לא
פונקציות ענן 19.1.0 7.2.0 8.0.0 לא לא לא
אירוח לא לא לא לא לא לא
הרחבות לא לא לא לא לא לא

זמינות SDK של Admin

צוֹמֶת Java פִּיתוֹן ללכת
מסד נתונים בזמן אמת 8.6.0 6.10.0 2.18.0 עתיד
Cloud 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
אחסון בענן עבור Firebase 9.8.0 עתיד עתיד עתיד
פונקציות ענן לא לא לא לא
אירוח לא לא לא לא
הרחבות לא לא לא לא