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

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

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

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

באמצעות המהדר של Extensions, אפשר להתקין ולנהל תוספים בסביבה מקומית בטוחה, להבין טוב יותר את היכולות שלהם ולצמצם את עלויות החיוב. במהלך ההרצה במהדורת ה-emulator, הפונקציות של התוסף פועלות באופן מקומי, כולל פונקציות שמופעלות על ידי אירועים ברקע באמצעות המהדורות של 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 ואין משאבים פעילים. בדרך כלל ניגשים לפרויקטים האלה דרך הדרכות של Codelab או מדריכים אחרים.

מזהי פרויקטים של פרויקטים לדוגמה כוללים את הקידומת 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 לבדיקה.

מה הלאה?