Firebase App Hosting משתמש ב-Cloud Build כדי להפוך את קוד המקור של האפליקציה לפורמט בקונטיינר שמתאים לפריסה ב-Cloud Run.
תהליך הבנייה מתבצע בשלבים העיקריים הבאים:
העברה: איסוף של קוד המקור וההגדרות של האפליקציה.
Build (בנייה): מתקין את יחסי התלות ובונה את האפליקציה.
העברה: השלב שבו מאגר התגים Cloud Run של סביבת הייצור עובר אל סביבת הייצור.
שלושת השלבים האלה תואמים ישירות לשלבי הבנייה 1, 2 ו-3 שמוצגים ב-Cloud Build במסוף Google Cloud:

שלב ההטמעה
השלב הזה אחראי לטיפול בלוגיקה שלפני הבנייה. הוא קורא, מנקה וכותב משתני סביבה שהוגדרו על ידי המשתמש. בנוסף, הוא מבטל את ההפניה לכל הסודות שצוינו בקובץ apphosting.yaml ומצמיד אותם.
שלב הבנייה
זהו ליבת תהליך ה-build, שאחראית ליצירת קובץ אימג' בקונטיינר שאפשר להריץ וקובץ bundle.yaml שמגדיר את תצורת ה-build.
הוא משתמש ב-Cloud Native Buildpacks כדי לארוז את האפליקציה בצורה יעילה. מידע נוסף על הקובץ bundle.yamlזמין ב-GitHub.
ה-buildpacks אחראים להמיר את קוד המקור של האפליקציה לקובצי אימג' בקונטיינרים שמוכנים לייצור. Firebase App Hosting משלב כמה חבילות buildpack כדי להשלים את תהליך ה-build:
- Runtime Buildpack: מוודא שכל הרכיבים הדרושים להרצת אפליקציית Node.js בסיסית כלולים ושהתלות מותקנת.
- Monorepo Buildpack: מגדיר buildpacks עוקבים לטיפול בתרחישים שונים של monorepo.
Framework Buildpack: מתקין את מתאם המסגרת הנכון (כמו Angular או Next.js) ומכין את ה-buildpacks הבאים.
מתאמי המסגרת אחראים להרצת פקודת ה-build של הייצור ולמיפוי של ערכי תצורה רלוונטיים ספציפיים למסגרת לפורמט סטנדרטי שניתן לקריאה על ידי App Hosting.
Package Manager Buildpack: מריץ את ההתקנה של יחסי התלות ובונה את האפליקציה באמצעות npm, yarn או pnpm.
Output Bundle Buildpack: מגדיר את פקודת ההפעלה ומכין את חבילת הפלט להרצה.
שלב העברה
בשלב האחרון הזה, כל המידע שחולץ מקוד המקור של האפליקציה, בנוסף לקובץ האימג' של קונטיינר ה-build, נארז ונשלח אל ה-backend של App Hosting. ה-App Hosting backend משתמש במידע הזה כדי להגדיר את Cloud Run עם ההגדרות המתאימות.
מידע נוסף
תהליך ה-build כולו App Hosting הוא קוד פתוח.
- קוד ה-buildpack נמצא במאגר ה-buildpacks של Google Cloud
- הקוד של מתאמי המסגרות נמצא במאגר firebase-framework-tools
- מידע נוסף על Cloud Native buildpacks ועל Cloud Build