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

אתם יכולים לבצע בדיקות מקומיות של האפליקציה לפני הפריסה ב-App Hosting באמצעות אמולטור App Hosting, שהוא חלק מ-Firebase Local Emulator Suite.

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

הנושא הזה מיועד למשתמשים שכבר מכירים את App Hosting. אם צריך, כדאי לעיין במבוא ל-App Hosting ובחומרים נוספים שיעזרו לכם להבין איך App Hosting עובד.

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

באמצעות המהדר של App Hosting תוכלו לבדוק ולשפר את אפליקציות האינטרנט שלכם באופן מקומי. כך תוכלו לייעל את תהליך הפיתוח ולשפר את האיכות של אפליקציות אינטרנט שנוצרו באמצעות Firebase ופורסמו ב-App Hosting.

האמולטור של App Hosting:

  1. מאפשרת להריץ את אפליקציית האינטרנט באופן מקומי, עם משתני סביבה שמוגדרים בקובצי התצורה apphosting.yaml.
  2. אפשר לייצא את הסודות ששמרתם בסביבות App Hosting השונות, וכך לדמות אפליקציות בסביבות שונות.
  3. אפשר להשתמש בו לצד אמולטורים אחרים של Firebase. אם אתם משתמשים ב-Firestore, ב-Auth או באמולטור אחר, ה-Local Emulator Suite מוודא שהאמולטורים האלה מופעלים קודם לאמולטור App Hosting.

הגדרת האמולטור

כדי להתחיל, צריך להתקין ולאתחל את Local Emulator Suite כפי שמתואר במאמר התקנה, הגדרה ושילוב של Local Emulator Suite. בנוסף למהדמנים אחרים של Firebase שרוצים להגדיר, חשוב לבחור באפשרות App Hosting Emulator. ב-CLI תופיע בקשה להזין ערכים מסוימים של המהדר App Hosting, כולל:

firebase init emulators
=== Emulators Setup
? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ App Hosting Emulator
 ◯ Firestore Emulator
 ◯ Database Emulator
 ◯ Hosting Emulator
 ◯ Pub/Sub Emulator
 ◯ Storage Emulator
 ◯ Eventarc Emulator
(Move up and down to reveal more choices)

? Specify your app's root directory relative to your project (.)

? What configs would you like to export? (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 ❯◯ Secrets

? Which environment would you like to export secrets from Secret Manager for?:
  ◯ base (apphosting.yaml)
 ❯◯ staging (apphosting.yaml + apphosting.staging.yaml)
  ◯ preview (apphosting.yaml + apphosting.preview.yaml)

i Wrote Secrets as environment variables to apphosting.local.yaml.
i apphosting.local.yaml has been automatically added to your .gitignore.

הערכים שתספקו בתהליך ההגדרה הזה ישמשו לעדכון ההגדרות של המהדר של App Hosting ב-firebase.json. אפשר גם להגדיר את המהדר של App Hosting על ידי עדכון firebase.json ישירות. הסכימה של אמולטור האירוח של אפליקציות היא:

{
  ...
  "emulators": {
    "apphosting": {
      "startCommandOverride": <command> [optional]
      "rootDirectory": <path> [optional]
      }
    }
  }
  • השדה startCommandOverride נוצר ומוגדר באופן אוטומטי כשהמכונה הווירטואלית מופעלת. אם לא תספקו את הפרמטר הזה, הסימולטור יזהה ויפעיל את הפקודה dev של מנהל החבילות.
  • rootDirectory משמש לתמיכה בהגדרות של פרויקטים ב-monorepo. אם אפליקציית האינטרנט נמצאת בתיקיית משנה, צריך לספק את הנתיב של התיקייה הזו ביחס לשורש (המיקום של firebase.json).

ניהול ההדמיה

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

ייצוא סודות כדי לדמות סביבות שונות באופן מקומי

אם אתם עובדים עם מספר סביבות ואתם רוצים לדמות מקומית סביבות אפליקציות שונות, יכול להיות שתצטרכו את סודות הסביבות המתאימות. אפשר לייצא סודות לסביבה ספציפית באמצעות הפקודה apphosting:config:export ב-CLI (לחלופין, אפשר לייבא סודות במהלך האיפוס של הסימולטור, כפי שמתואר בקטע הגדרת הסימולטור).

בפקודה הזו צריך לבחור מבין סביבות App Hosting הזמינות של הפרויקט. ההגדרות של App Hosting ספציפיות לסביבה (לדוגמה, apphosting.staging.yaml) והגדרות App Hosting הבסיסיות (apphosting.yaml) מתמזגות, וההגדרות הספציפיות לסביבה מקבלות עדיפות. אם סודות עם אותו שם קיימים בשתי ההגדרות, המערכת משתמשת בסוד מההגדרה הספציפית לסביבה.

לדוגמה, כדי לייצא סודות למהדר מתוך סביבת ייצור:

firebase apphosting:config:export --project <your firebase project Id>

? What configs would you like to export? (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 ❯◯ Secrets

? Which environment would you like to export secrets from Secret Manager for?:
  ◯ base (apphosting.yaml)
 ❯◯ staging (apphosting.yaml + apphosting.staging.yaml)
  ◯ preview (apphosting.yaml + apphosting.preview.yaml)
i Wrote Secrets as environment variables to apphosting.local.yaml.
i apphosting.local.yaml has been automatically added to your .gitignore.

קובץ apphosting.local.yaml מתעדכן (או נוצר אם הוא לא קיים) עם הסודות המיוצאים כמשתני סביבה. מכיוון שהקובץ מכיל עכשיו מידע רגיש בטקסט ללא הצפנה, הוא יתווסף באופן אוטומטי לקובץ .gitignore כדי למנוע מצב שבו הוא יועבר בטעות למאגר של קוד המקור.

הרצת האמולטור

firebase emulators:start

הפקודה הזו תפעיל את כל האמולטורים שהוגדרו בקובץ firebase.json, כולל אמולטור App Hosting.