מקובל לפרוס כמה סביבות מאותו codebase, כשכל אחת מהן מוגדרת בצורה קצת שונה. לדוגמה, יכול להיות שתרצו להקצות פחות CPU ו-RAM לסביבת הבדיקה, או לוודא שבסביבת הייצור תמיד תהיה לפחות מופע אחד פעיל ומוכן לשרת בקשות. יכול להיות שתרצו גם לציין משתני סביבה וסודות שונים בהתאם לסביבה ולמשאבים שבהם אתם רוצים להשתמש.
במדריך הזה מוסבר איך פורסים סביבת ייצור וסביבת Staging, כל אחת בפרויקט נפרד ב-Firebase. באותה דרך, אפשר לבצע פריסה לסוגים שונים של סביבות. מידע נוסף על סביבות זמין במאמרים סקירה כללית של סביבות ושיטות מומלצות כלליות להגדרת פרויקטים ב-Firebase.
דרישות מוקדמות
- קוד האפליקציה כבר מאוחסן ב-GitHub.
- כבר יצרתם פרויקט נפרד לכל אחת מהסביבות – לדוגמה,
my-production-firebase-projectו-my-staging-firebase-project. חשוב לתייג את פרויקט Firebase בסביבת הייצור באמצעות סוג הסביבה 'ייצור'. - בכל פרויקט, יצרתם App Hosting backend, כשההסתעפות הפעילה מוגדרת להסתעפות ב-GitHub שרוצים לפרוס (למשל
main). מידע נוסף זמין במאמר תחילת העבודה עם App Hosting.
שלב 0: יצירת הגדרת ברירת מחדל בקובץ apphosting.yaml
App Hosting תומך בקובץ תצורה בשם apphosting.yaml לניהול הגדרות זמן ריצה (CPU, מקביליות, מגבלות זיכרון וכו') ומשתני סביבה לאפליקציה. הוא תומך גם בהפניות לסודות שמנוהלים באמצעות Cloud Secret Manager, כך שאפשר לבדוק אותו בבקרת קוד מקור. מידע נוסף זמין במאמר הגדרת קצה עורפי.
כדי להתחיל, יוצרים קובץ apphosting.yaml בתיקיית השורש של האפליקציה.
זהו קובץ התצורה החלופי שמשמש כשלא נמצא קובץ תצורה ספציפי לסביבה. הערכים שמאוחסנים ב-apphosting.yaml צריכים להיות ערכי ברירת מחדל שאפשר להשתמש בהם בבטחה בכל הסביבות.
בקטעים הבאים מוסבר איך לשנות את ערכי ברירת המחדל ב-apphosting.yaml לסביבות ספציפיות. בדוגמה הזו, התהליך יוצר סביבת פיתוח.
שלב 1: הגדרת שם הסביבה
לכל קצה עורפי של App Hosting יש הגדרה של שם הסביבה. השדה הזה משמש למיפוי של ה-backend לקובץ הגדרות ספציפי לסביבה, ואפשר לשנות אותו בכל שלב. אפשר להגדיר רק שם סביבה אחד לכל קצה עורפי.
כדי להגדיר את שם הסביבה של ה-Backend:
- במסוף Firebase, בוחרים את פרויקט הביניים (בדוגמה הזו,
my-staging-firebase-project). - עוברים אל Hosting & Serverless (אירוח ושרתים) > App Hosting (אירוח אפליקציות).
- לוחצים על תצוגה בקצה העורפי שבחרתם.
- בכרטיסייה הגדרות, בוחרים באפשרות סביבה.
- בקטע שם הסביבה,מזינים את שם הסביבה. אפשר לתת לסביבה כל שם שרוצים. בדוגמה הזו, זה staging.
- לוחצים על שמירה.
כשמפעילים App Hosting השקה של גרסה חדשה של ה-backend (באמצעות git
push או באופן ידני דרך מסוף Firebase), App Hosting יחפש קובץ apphosting.ENVIRONMENT_NAME.yaml לפני שיחזור ל-apphosting.yaml.
שלב 2: יוצרים קובץ apphosting.yaml ספציפי לסביבה
כדי להגדיר את ההגדרות הספציפיות לסביבה, יוצרים קובץ בשם apphosting.ENVIRONMENT_NAME.yaml כדי לציין שינויים בהגדרות שספציפיים לסביבה. הפורמט של הקובץ הזה זהה לפורמט של apphosting.yaml שמוגדר כברירת מחדל, והוא צריך להיות ממוקם בספריית הבסיס של האפליקציה לצד apphosting.yaml.
בזמן הבנייה, App Hosting ממזג את שני הקבצים האלה, והערכים בקובץ ה-YAML הספציפי לסביבה מקבלים עדיפות על פני קובץ הבסיס apphosting.yaml.
בדוגמה הזו, יוצרים קובץ בשם apphosting.staging.yaml בתיקיית השורש של האפליקציה:
runConfig:
cpu: 1
memoryMiB: 512
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
נניח שכבר יש לכם apphosting.yaml שנראה כך:
runConfig:
cpu: 3
memoryMiB: 1024
maxInstances: 4
minInstances: 0
concurrency: 100
env:
- variable: API_URL
value: api.service.com
availability:
- BUILD
- RUNTIME
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
הפלט הסופי הממוזג, שאפשר לבדוק ביומנים של Cloud Build, ייראה כך:
runConfig:
cpu: 1
memoryMiB: 512
maxInstances: 4
minInstances: 0
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
שימו לב שערכים מסוימים של runConfig כמו CPU נמחקו, וגם משתני סביבה חופפים.
שלב 3: פריסת בסיס הקוד
אחרי שמסיימים לערוך את קובץ apphosting.ENVIRONMENT_NAME.yaml הספציפי לסביבה, מעלים את הקובץ ל-GitHub:
$ git add apphosting.<ENVIRONMENT_NAME>.yaml
$ git commit -m "Added environment specific yaml file"
$ git push
כל השרתים העורפיים שתויגו בשם הסביבה הזה ישתמשו בערכי ברירת המחדל הספציפיים שציינתם בקובץ ה-YAML התואם, ויחזרו לערך apphosting.yaml אם לא יימצא ערך. בשרתי קצה עורפיים שלא משויך אליהם שם סביבה, אפשר להמשיך להשתמש בקובץ apphosting.yaml.
השלבים הבאים
- מידע נוסף: אפשר לעיין ב-codelab של Firebase שמשלב אפליקציה מתארחת עם אימות ב-Firebase ותכונות AI מבית Google: Next.js | Angular
- חיבור דומיין מותאם אישית
- הגדרת הקצה העורפי.
- מעקב אחר השקות, אופן השימוש באתר ויומנים.