שימוש באמולטור התוספים להערכת תוספים

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

בנוסף, המדריך הזה מניח שאתם מכירים את Firebase Extensions ויודעים איך להשתמש בהם באפליקציות Firebase.

מה אפשר לעשות עם האמולטור של Extensions?

בעזרת האמולטור של Extensions, אתם יכולים להתקין תוספים ולנהל אותם בסביבה מקומית בטוחה, ולהבין טוב יותר את היכולות שלהם תוך צמצום עלויות החיוב. האמולטור מריץ את הפונקציות של התוסף באופן מקומי, כולל פונקציות שמופעלות על ידי אירועים ברקע באמצעות האמולטורים של Cloud Firestore,‏ Realtime Database,‏ Cloud Storage for Firebase,‏ Authentication ו-Pub/Sub, ופונקציות שמופעלות על ידי Eventarc ומוטמעות ב-Cloud Functions v2.

בחירת פרויקט ב-Firebase

Firebase Local Emulator Suite מדמה מוצרים לפרויקט Firebase אחד.

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

Local Emulator Suite תומך באמולציה של פרויקטים אמיתיים ופרויקטים להדגמה ב-Firebase.

סוג הפרויקט תכונות שימוש באמולטורים
ריאל

פרויקט Firebase אמיתי הוא פרויקט שיצרתם והגדרתם (בדרך כלל באמצעות מסוף Firebase).

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

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

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

הדגמה

לפרויקט הדגמה ב-Firebase אין הגדרות אמיתיות של Firebase ואין משאבים פעילים. בדרך כלל ניגשים לפרויקטים האלה דרך שיעורי Lab ב-Codelabs או מדריכים אחרים.

מזהי הפרויקטים של פרויקטים לדוגמה כוללים את הקידומת demo-.

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

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

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

התקנה והערכה של תוסף

קל להשתמש באמולטור של Extensions כדי לבדוק אם התוסף מתאים לצרכים שלכם.

נניח שאתם רוצים להשתמש בתוסף Trigger Email (firestore-send-email), למרות שתהליך העבודה הבא מתייחס לכל תוסף. כשמפעילים את התוסף עם אמולטורים מקומיים, התוסף Trigger Email משתמש באופן אוטומטי באמולטורים של Cloud Firestore ו-Cloud Functions.

כדי להעריך תוסף באופן מקומי:

  1. מוסיפים את התוסף למניפסט של התוספים המקומיים. מניפסט של תוספים הוא רשימה של מופעי תוספים וההגדרות שלהם.

    firebase ext:install --local firebase/firestore-send-email

    הפעלת הפקודה שלמעלה תבקש מכם להגדיר את הגרסה העדכנית של התוסף firebase/firestore-send-email ולשמור את ההגדרות במניפסט, אבל היא לא תפרוס את ההגדרות בפרויקט. מידע נוסף זמין במאמר ניהול הגדרות של תוספים באמצעות מניפסטים.

  2. מפעילים את Local Emulator Suite כרגיל.

    firebase emulators:start

עכשיו, באמצעות מופע התוסף firestore-send-email שמופיע במניפסט, Local Emulator Suite יוריד את קוד המקור של התוסף הזה אל ~/.cache/firebase/extensions. אחרי שהמקורות יורדו, ה-Local Emulator Suite יתחיל לפעול ותוכלו להפעיל כל אחת מהפונקציות של התוסף שמופעלות ברקע, ולחבר את האפליקציה ל-Local Emulator Suite כדי לבדוק את השילוב שלהם עם האפליקציה.

אתם יכולים להשתמש ב-Emulator Suite UI כדי להוסיף נתונים לאוסף המסמכים של האימיילים ולהגדיר משאבים אחרים לקצה העורפי, כפי שנדרש על ידי התוסף Trigger Email.

לחלופין, בסביבות בדיקה לא אינטראקטיביות כמו תהליכי עבודה של שילוב רציף, אפשר לכתוב סקריפט בדיקה להערכת התוסף, שבין היתר מאכלס את הנתונים הנדרשים של Cloud Firestore ומפעיל פונקציות. לאחר מכן, צריך להפעיל את Local Emulator Suite כדי להריץ את סקריפט הבדיקה:

firebase emulators:exec my-test.sh

ההבדלים בין בדיקה באמצעות אמולטור Extensions לבין בדיקה בסביבת הייצור

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

Cloud IAM

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

הגבלה על סוג הטריגר

נכון לעכשיו, Firebase Local Emulator Suite תומך רק בפונקציות שמופעלות על ידי בקשות HTTP, בטריגרים של אירועים בהתאמה אישית של Eventarc לתוספים ובפונקציות שמופעלות על ידי אירועים ברקע ל-Cloud Firestore, ל-Realtime Database, ל-Cloud Storage for Firebase, ל-Authentication ול-Pub/Sub. כדי להעריך תוספים שמשתמשים בסוגים אחרים של פונקציות מופעלות, צריך להתקין את התוסף בפרויקט Firebase לבדיקה.

מה הלאה?