פריסת יעדים

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

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

  • תצורת האירוח של כל אחד מאתרי האירוח
  • נכסים סטטיים מספריית הפרויקטים לכל אחד מאתרי האירוח
  • כללי אבטחה שמשותפים למספר מכונות של מסדי נתונים בזמן אמת או למספר קטגוריות של Cloud Storage

כדי להגדיר יעד פריסה:

  1. מחילים TARGET_NAME על המשאב של Firebase או על קבוצת משאבי Firebase המטורגטים.
  2. בקובץ firebase.json, כשקובעים את ההגדרות לכל משאב או קבוצת משאבים, כדאי להפנות ל-TARGET_NAME המשויך.

כשאתם מריצים פקודות ב-CLI של Firebase (כמו firebase deploy), ה-CLI של Firebase מתאים כל TARGET_NAME למשאבים המשויכים אליו ב-Firebase. לאחר מכן ה-CLI מעביר לפרויקט Firebase את ההגדרות של כל משאב.

איך להגדיר יעדי פריסה למשאבי Firebase

באמצעות ה-CLI של Firebase, מחילים TARGET_NAME (מזהה מקוצר שאתם מגדירים בעצמכם) על משאב ב-Firebase או על קבוצה של משאבים ב-Firebase. מערכת Firebase תומכת ביעדי פריסה עבור:

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

הגדרת יעדי פריסה לאירוח

כדי ליצור יעד פריסה ולהחיל TARGET_NAME על אתר אירוח, מריצים את פקודת ה-CLI הבאה:

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

כאשר הפרמטרים הם:

  • TYPE – סוג המשאב הרלוונטי ב-Firebase

    • אם רוצים להוסיף אתרים לאירוח ב-Firebase, השתמשו ב-hosting.
  • TARGET_NAME – שם ייחודי לאתר האירוח שבו אתם פורסים

  • RESOURCE_IDENTIFIERSITE_ID של אתר האירוח כפי שמפורט בפרויקט Firebase

לדוגמה, אם יצרתם שני אתרים (myapp-blog ו-myapp-app) בפרויקט Firebase, תוכלו להחיל TARGET_NAME ייחודי (blog ו-app, בהתאמה) על כל אתר על ידי הרצת הפקודות הבאות:

firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app

הגדרת יעדי פריסה עבור Cloud Storage או עבור מסד נתונים בזמן אמת

כדי ליצור יעד פריסה ולהחיל TARGET_NAME על קבוצה של משאבים ב-Cloud Storage או של מסד נתונים בזמן אמת, מריצים את פקודת ה-CLI הבאה:

firebase target:apply TYPE TARGET_NAME RESOURCE-1_IDENTIFIER RESOURCE-2_IDENTIFIER ...

כאשר הפרמטרים הם:

  • TYPE – סוג המשאב הרלוונטי ב-Firebase

    • לקטגוריות של Cloud Storage, צריך להשתמש ב-storage.
    • למופעים של מסד נתונים בזמן אמת, צריך להשתמש ב-database.
  • TARGET_NAME – שם ייחודי למשאב או לקבוצת המשאבים שחולקים כללי אבטחה

  • RESOURCE_IDENTIFIER – המזהים של המשאבים כפי שרשומים בפרויקט Firebase (כמו שמות של קטגוריות אחסון או מזהים של מכונה של מסד נתונים) עם אותם כללי אבטחה

לדוגמה, אפשר להחיל את TARGET_NAME של main על קבוצה של שלוש קטגוריות אזוריות של Cloud Storage (שכולן חולקות את אותם כללי אבטחה) על ידי הרצת הפקודה הבאה:

firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja

שימו לב ש-myproject.appspot.com הוא המזהה של קטגוריית ברירת המחדל, ו-myproject-eu ו-myproject-ja הן שתי קטגוריות נוספות שנוצרו בפרויקט Firebase.

צריך להגדיר את קובץ firebase.json לשימוש ביעדי פריסה

אחרי שמגדירים יעדים לפריסת משאבים ב-Firebase, צריך להפנות לכל TARGET_NAME שהוחל בקובץ התצורה של firebase.json:

  1. יוצרים מערך אובייקטים של הגדרות אישיות לכל משאב TYPE ב-Firebase (hosting, storage או database).
  2. במערכים, צריך לציין את השדה target (באמצעות TARGET_NAME) ולקבוע את ההגדרות של המשאב או קבוצת המשאבים ב-Firebase המשויכים.

בהמשך לדוגמאות שלמעלה, שבו יש בפרויקט Firebase שני אתרי אירוח ושלוש קטגוריות של Cloud Storage (שחולקות אותם כללי אבטחה), הקובץ firebase.json ייראה כך:

{
  "hosting": [ {
      "target": "blog",  // "blog" is the applied TARGET_NAME for the Hosting site "myapp-blog"
      "public": "blog/dist",  // contents of this folder are deployed to the site "myapp-blog"

      // ...
    },
    {
      "target": "app",  // "app" is the applied TARGET_NAME for the Hosting site "myapp-app"
      "public": "app/dist",  // contents of this folder are deployed to the site "myapp-app"

      // ...

      "rewrites": [...]  // You can define specific Hosting configurations for each site
    }
  ]
}

{
  "storage": [ {
      "target": "main",  // "main" is the applied TARGET_NAME for the group of Cloud Storage buckets
      "rules": "storage.main.rules"  // the file that contains the shared security rules
    }
  ]
}

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

ניהול יעדי פריסה

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

פקודה תיאור
firebase target פירוט של יעדי הפריסה בספריית הפרויקטים הנוכחית שלך
firebase target:remove \
TYPE RESOURCE_IDENTIFIER
הסרה של משאב מהיעד שאליו הוא הוקצה
firebase target:clear \
TYPE TARGET_NAME
הסרת כל המשאבים או אתר האירוח מהיעד שצוין

הפקודות target:remove ו-target:clear מעדכנות באופן אוטומטי את הגדרות יעד הפריסה בקובץ .firebaserc בספריית הפרויקט.

בדיקה מקומית לפני פריסה

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

פקודה תיאור
firebase emulators:start אמולציה של כל המשאבים שהוגדרו בספריית הפרויקטים
firebase emulators:start \
--only hosting:TARGET_NAME
אמולציה של תוכן האירוח והתצורה שלו של אתר האירוח שצוין
firebase emulators:start \
--only storage:TARGET_NAME
אמולציה של קובץ הכללים בלבד עבור יעד Cloud Storage שצוין
firebase emulators:start \
--only database:TARGET_NAME
אמולציה של קובץ הכללים בלבד עבור יעד מסד הנתונים בזמן אמת שצוין

למידע נוסף על הגדרה של חבילת אמולטור מקומי של Firebase ועל השימוש בה.

פריסה של משאבים ספציפיים ב-Firebase

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

פקודה תיאור
firebase deploy יצירת גרסה של כל המשאבים שאפשר לפרוס בספריית הפרויקטים שלכם
firebase deploy \
--only hosting:TARGET_NAME
פריסה רק של תוכן האירוח והתצורה של אתר האירוח שצוין בערוץ החי של האתר
firebase hosting:channel:deploy CHANNEL_ID \
--only TARGET_NAME
פורס רק את התוכן והתצורה של אתר האירוח שצוין לערוץ תצוגה מקדימה של האתר
firebase deploy \
--only storage:TARGET_NAME
פריסה רק של קובץ הכללים ליעד Cloud Storage שצוין
firebase deploy \
--only database:TARGET_NAME
פריסה רק של קובץ הכללים ליעד שצוין של מסד הנתונים בזמן אמת