התקן, הגדר ושלב חבילת אמולטור מקומית

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

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

לפני התקנת Suite Emulator תצטרך:

  • Node.js גרסה 8.0 ומעלה.
  • Java גרסה 1.8 ומעלה.

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

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

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

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

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

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

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

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

firebase emulators:exec השיטה היא בדרך כלל יותר מתאים זרימות עבודה אינטגרציה מתמשכת.

ייצא וייבא נתוני אמולטור

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

אמולטורים: יצוא export_directory

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

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

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

מריץ תמונות Emulator Suite המיכלות

התקנה ותצורה של Suite Emulator עם מיכלים במערך 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 API

רשימת אמולטורים רצים

כדי לפרט את אמולטורים הפועלים כעת, לשלוח GET בקשה /emulators נקודת הסיום של Hub Emulator.

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 נקודת הסיום של Hub Emulator.

curl -X PUT localhost:4400/functions/disableBackgroundTriggers

התוצאה תהיה אובייקט JSON המפרט את המצב הנוכחי.

{
  "enabled": false
}

כדי לאפשר טריגרים פונקציה המקומי לאחר שהם הושבתו, לשלוח PUT בקשה /functions/enableBackgroundTriggers נקודת הסיום של Hub Emulator.

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 עתיד עתיד עתיד
פונקציות ענן לא לא לא לא
אירוח לא לא לא לא