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

Manifest של תוספים הוא רשימה של מכונות של תוספים וההגדרות שלהן. בעזרת המניפסט אפשר:

  • שיתוף תצורת התוספים שלך עם אחרים
  • להעתיק את תצורת התוספים בין פרויקטים שונים (כגון פרויקט ה-Staging לפרויקט הייצור שלכם)
  • איך פורסים את כל התוספים בבת אחת
  • אפשר לבדוק איך התוספים פועלים עם האפליקציה באמצעות Firebase Local Emulator Suite
  • ביצוע השמירה של הגדרות התוספים במערכת בקרת הגרסאות
  • הכללת תוספים בצינור עיבוד הנתונים של CI/CD

מניפסט של תוספים כולל שני חלקים:

  • הקטע extensions בתוך firebase.json, שהוא מפה של מופע מזהה לגרסת תוסף. לדוגמה:

    {
     "extensions": {
       "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18",
       "my-image-resizer": "firebase/storage-resize-images@^0.1.22",
     }
    }
    
  • .env קבצים שמכילים את ההגדרות של כל אחד מהתוספים שלך מופעים בספריית המשנה extensions/ של פרויקט Firebase. לדוגמה, מופע של storage-resize-images עשוי קובץ .env כמו בדוגמה הבאה:

    IMAGE_TYPE=jpeg
    LOCATION=us-central1
    IMG_BUCKET=${param:PROJECT_ID}.appspot.com
    IMG_SIZES=100x100
    DELETE_ORIGINAL_FILE=false

יצירת מניפסט של תוספים

יש שלוש דרכים ליצור מניפסט של תוספים:

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

שתי השיטות הראשונות מוסברות בהמשך.

ניהול המניפסט של התוספים באמצעות ה-CLI של Firebase

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

לדוגמה:

firebase ext:install --local firebase/firestore-bigquery-export

הרצת הפקודה שלמעלה תנחה אותך להגדיר את הגרסה האחרונה של התוסף firebase/firestore-bigquery-export ושומר את התצורה בו את המניפסט, אבל הוא לא יפרוס את התצורה בפרויקט שלכם.

עוד כמה דוגמאות לפקודות שמשנות את המניפסט של התוספים:

# ext:configure changes the params for an extension instance in your extensions manifest
$ firebase ext:configure my-bigquery-extension --local

# ext:update --local updates an instance in your extensions manifest
# to the latest version of that extension
$ firebase ext:update my-bigquery-extension --local

# You can also specify a version if you don't want to update to the latest version
$ firebase ext:update my-bigquery-extension firebase/firestore-bigquery-export@0.1.10 --local 

# ext:uninstall --local removes an instance from your extensions manifest
$ firebase ext:uninstall my-bigquery-extension --local

ייצוא הגדרות של תוספים בפרויקט

כדי לשמור במניפסט את התצורה הנוכחית של התוספים של פרויקט, יש לבצע את הפעולות הבאות: הבאים:

  1. אם עוד לא עשיתם זאת, מגדירים את ה-CLI של Firebase
  2. מהנחיה במעטפת, משנים לספריית הפרויקט. (הפרויקט שלך הספרייה מכילה את הקובץ firebase.json).
  3. מריצים את הפקודה ext:export:
    firebase ext:export

הפקודה ext:export תוסיף קטע extensions אל firebase.json חדש. בנוסף, הפקודה ext:export יוצרת את הספרייה extensions שמכיל קובץ .env עבור כל מופע של תוסף שהתקנת. הקבצים האלה מכילים את פרמטרים התצורה של כל מכונה.

בדיקת הגדרה של תוספים באמצעות Firebase Local Emulator Suite

אחרי שמוסיפים כמה מופעים של תוספים למניפסט של התוספים, אפשר אפשר לנסות אותם בעזרת Local Emulator Suite.

  1. מתקינים ומגדירים את Local Emulator Suite.

  2. מפעילים את Local Emulator Suite:

    • כדי להפעיל את חבילת האמולטור באופן אינטראקטיבי, מריצים את: firebase emulators:start
    • כדי להריץ את חבילת האמולטור ולהריץ סקריפט בדיקה, מריצים את: firebase emulators:exec my-test.sh

עכשיו, אם יש לכם מופעים של תוספים במניפסט, האפליקציה Local Emulator Suite תוריד את קוד המקור של התוספים האלה אל ~/.cache/firebase/extensions. אחרי ההורדה, Local Emulator Suite יתחיל ותהיה לך אפשרות להפעיל כל אחד מהסוגים 'תוספים' פונקציות שמופעלות ברקע וחיבור האפליקציה לאמולטור כדי לבדוק את השילוב שלהם עם האפליקציה.

פריסה של הגדרות תוספים בפרויקט

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

כדי לפרוס מניפסט של תוספים:

  1. בהודעת הפקודה של המעטפת, עוברים לספרייה שמכילה את ההגדרות השמורות של התוספים. (זו הספרייה שמכילה firebase.json אם הרצת את ext:export עכשיו, כבר הצטרפת בצורה הנכונה ).
  2. מריצים את הפקודה deploy. אם רוצים לפרוס את התוספים לפרויקט אחר מלבד הפרויקט הנוכחי, צריך לציין גם את --project=:
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

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

הגדרות תוספים ספציפיות לפרויקט

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

  • צריך להזין ערכי פרמטרים שונים בין פרויקטים ב-extensions/EXTENSION_INSTANCE_ID.env.YOUR_PROJECT_ID
  • יש להזין ערכי פרמטרים משותפים ב-extensions/EXTENSION_INSTANCE_ID.env.

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

  • מוסיפים את הפרמטרים שאינם סודיים שבהם רוצים להשתמש במהלך ההדמיה ל-extensions/EXTENSION_INSTANCE_ID.env.local
  • שמירת ערכי הפרמטרים הסודיים ב-extensions/EXTENSION_INSTANCE_ID.secret.local