ניתן להתקין ולהגדיר את Firebase Local Emulator Suite עבור אב טיפוס וסביבות בדיקה שונות, החל מפגישות חד-פעמיות של יצירת אב טיפוס ועד זרימות עבודה מתמשכות של אינטגרציה בקנה מידה ייצור.
התקן את חבילת האימולטור המקומי
לפני התקנת חבילת האמולטור תזדקק ל:
כדי להתקין את חבילת האמולטור:
- התקן את Firebase CLI . אם עדיין לא התקנת את Firebase CLI, התקן אותו כעת . תזדקק לגרסת CLI 8.14.0 ומעלה כדי להשתמש בחבילת האמולטור. אתה יכול לבדוק איזו גרסה התקנת באמצעות הפקודה הבאה:
firebase --version
- אם עדיין לא עשית זאת, אתחל את ספריית העבודה הנוכחית כפרויקט Firebase, בצע את ההנחיות על המסך כדי לציין באילו מוצרים להשתמש:
firebase init
- הגדר את חבילת האמולטור. פקודה זו מפעילה אשף תצורה המאפשר לך לבחור אמולטורים מעניינים, להוריד את הקבצים הבינאריים של האמולטור המתאימים ולהגדיר יציאות אמולטור אם ברירות המחדל אינן מתאימות.
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/ אם הם עדיין לא מותקנים.
| ||||||||||||
emulators: exec scriptpath | הפעל את הסקריפט ב- scriptpath לאחר הפעלת אמולטורים עבור מוצרי Firebase המוגדרים ב- firebase.json . תהליכי האמולטור ייפסקו אוטומטית כאשר הסקריפט יסיים לפעול.
|
שיטת ה- 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. ה- אתה יכול להורות לאמולטורים לייצא נתונים אוטומטית כאשר הם נסגרים באמצעות דגלי |
השתלב עם מערכת ה-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 | עתיד | עתיד | עתיד |
פונקציות ענן | לא | לא | לא | לא |
אירוח | לא | לא | לא | לא |
הרחבות | לא | לא | לא | לא |