פריסת יעדים

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

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

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

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

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

הגדרת יעדי פריסה ל-Hosting

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

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

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

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

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

  • RESOURCE_IDENTIFIER – ה-SITE_ID של האתר Hosting כפי שמופיע בפרויקט 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 או ל-Realtime Database

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

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

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

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

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

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

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

firebase target:apply storage main myproject.firebasestorage.app myproject-eu myproject-ja

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

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

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

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

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

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

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

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

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

מידע נוסף על הגדרה ושימוש ב-Firebase Local Emulator Suite

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

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

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