ניתן להתקין את חבילת האמולטור המקומי של Firebase ולהגדיר אותה בסביבות של אב טיפוס ובדיקה, מסשנים חד-פעמיים של יצירת אב טיפוס ועד תהליכי עבודה של אינטגרציה רציפה (CI) בהיקף הייצור.
התקנת חבילת האמולטור המקומית
לפני שמתקינים את חבילת האמולטור, צריך:
כדי להתקין את חבילת האמולטור:
- מתקינים את ה-CLI של Firebase.
אם עדיין לא התקנתם את Firebase CLI:
להתקין אותה עכשיו.
כדי להשתמש בחבילת האמולטור יש צורך בגרסה 8.14.0 ומעלה של CLI. אפשר
כדי לבדוק איזו גרסה התקנתם, משתמשים בפקודה הבאה:
firebase --version
- אם עדיין לא עשיתם זאת, צריך לאתחל את ספריית העבודה הנוכחית
לפרויקט Firebase, ולבצע את ההנחיות במסך כדי לציין
מוצרים לשימוש:
firebase init
- מגדירים את חבילת האמולטור. הפקודה הזו מפעילה אשף תצורה שמאפשר לבחור את הסימולטורים הרצויים, להוריד את הקבצים הבינאריים המתאימים של הסימולטורים ולהגדיר את יציאות הסימולטורים אם הגדרות ברירת המחדל לא מתאימות.
firebase init emulators
לאחר התקנת אמולטור, לא מבוצעות בדיקות עדכונים ולא נוספות הורדות אוטומטיות יתבצעו עד שתעדכנו את הגרסה של Firebase CLI.
הגדרת חבילת אמולטור
יש לך אפשרות להגדיר את האמולטורים יציאות רשת ונתיב לאבטחה
הגדרות הכללים בקובץ firebase.json
:
- כדי לשנות את יציאות המהדר, מריצים את הפקודה
firebase init emulators
או עורכים את הקובץfirebase.json
באופן ידני. - כדי לשנות את הנתיב להגדרות של כללי האבטחה, צריך לערוך את
firebase.json
במצב ה-GRU
אם לא תגדירו את ההגדרות האלה, הסימולטורים יקשיבו ביציאות ברירת המחדל שלהם, והסימולטורים של Cloud Firestore, Realtime Database ו-Cloud Storage for Firebase יפעלו עם אבטחת נתונים פתוחה.
פקודה | תיאור |
---|---|
אמולטורים init | הפעלת אשף אתחול של אמולטור. צריך לזהות אמולטורים שצריך להתקין, ולבחור את ההגדרות ליציאת האמולטור. 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
של ספריית בדיקות יחידה (unit testing). - הדגל
--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
האמולטור Realtime Database, האמולטור Cloud Firestore וחלק
האמולטור Cloud Storage for Firebase מבוסס על Java, ואפשר להתאים אותו אישית
עם דגלי JVM דרך משתנה הסביבה JAVA_TOOL_OPTIONS
.
לדוגמה, אם יופיעו שגיאות שקשורות לשטח הערימה של Java ב-Java, ייתכן גודל הערימה המקסימלי של Java ל-4GB:
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
אפשר לציין כמה דגלים במירכאות ולהפריד ביניהן באמצעות רווחים, למשל
JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g"
הדגלים משפיעים רק על מודל Java
הרכיבים של האמולטורים ואין להם השפעה על חלקים אחרים
Firebase CLI, כמו Emulator Suite UI.
הפעלת אמולטורים
ניתן להתחיל אמולטורים לרוץ עד לסיום ידני, או לרוץ עבור במשך הזמן של סקריפט בדיקה ייעודי, ולאחר מכן נסגר באופן אוטומטי.
פקודה | תיאור | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
אמולטורים:start | מפעילים אמולטורים למוצרי Firebase שהוגדרו ב-firebase.json .
תהליכי האמולטור ימשיכו לפעול עד שיפסיקו באופן מפורש. אם האמולטורים עדיין לא מותקנים, הקריאה ל-emulators:start תגרום להורדת האמולטורים אל ~/.cache/firebase/emulators/.
|
||||||||||||
אמולטורים:exec scriptpath | מריצים את הסקריפט ב-scriptpath אחרי שמפעילים את הסימולטורים של מוצרי Firebase שהוגדרו ב-firebase.json . תהליכי אמולטור יפסיקו באופן אוטומטי
הרצת הסקריפט הסתיימה.
|
בדרך כלל השיטה firebase emulators:exec
מתאימה יותר
תהליכי עבודה של אינטגרציה רציפה (CI).
ייצוא וייבוא של נתוני אמולטור
אפשר לייצא נתונים מהמקורות הבאים: 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 שפועלת. השדה
באפשרותך להורות לאמולטורים לייצא נתונים באופן אוטומטי כשהם מכבים אותם באמצעות
|
שילוב עם מערכת ה-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. פועלים לפי ההוראות כדי לבצע אימות. צריך לבצע את השלב הזה רק פעם אחת לכל פרויקט, כי האסימון יהיה תקף בכל גרסאות build. יש להתייחס לאסימון כמו לסיסמה; ולוודא שהוא סודי.
אם סביבת ה-CI מאפשרת לציין משתני סביבה שאפשר להשתמש בהם בסקריפטים של ה-build, פשוט יוצרים משתנה סביבה בשם FIREBASE_TOKEN
, והערך הוא המחרוזת של אסימון הגישה. ה-CLI של Firebase
יקלוט באופן אוטומטי את משתנה הסביבה FIREBASE_TOKEN
אמולטורים יתחילו לפעול בצורה תקינה.
כמוצא אחרון, אפשר פשוט לכלול את האסימון בסקריפט ה-build, אבל
מוודאים שלגורמים לא מהימנים אין גישה. בשביל הקוד הזה
גישה, אפשר להוסיף את --token "YOUR_TOKEN_STRING_HERE"
הפקודה firebase emulators:exec
.
שימוש ב-Emulator Hub REST API
הצגת רשימה של אמולטורים שפועלים
כדי להציג רשימה של האמולטורים שפועלים כרגע, צריך לשלוח בקשת GET
אל /emulators
בנקודת הקצה של מרכז האמולטור.
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 של אמולטור
בטבלאות בקטע הזה מצוין אילו אמולטורים נתמכים על ידי הלקוח ו-Admin SDK. עתידי: המשמעות היא שאנחנו מתכננים תמיכה באמולטורים, אבל היא עדיין לא זמינה.
זמינות של SDK ללקוחות
Android | פלטפורמות של Apple | אתר |
ממשק המשתמש של Firebase Android |
ממשק המשתמש של Firebase ב-iOS |
ממשק המשתמש של Firebase אינטרנט |
|
---|---|---|---|---|---|---|
Realtime Database | 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 | עתיד | לא רלוונטי |
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 | לא זמין | לא זמין | לא זמין | לא זמין | לא זמין | לא רלוונטי |
הזמינות של Admin SDK
צומת | Java | Python | Go | |
---|---|---|---|---|
Realtime Database | 8.6.0 | 6.10.0 | 2.18.0 | עתיד |
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 | לא זמין | לא זמין | לא זמין | לא רלוונטי |