Firebase App Hosting משתמש ב-Cloud Build כדי להמיר את קוד המקור של האפליקציה לפורמט בקונטיינר שמתאים לפריסה ב-Cloud Run.
תהליך ה-build פועל לפי השלבים העיקריים הבאים:
הטמעת נתונים: איסוף של קוד המקור וההגדרות של האפליקציה.
Build: התקנה של יחסי התלות ויצירת האפליקציה.
העברה: השלמת הקונטיינר Cloud Run בסביבת הייצור.
שלושת השלבים האלה תואמים ישירות לשלבים 1, 2 ו-3 של ה-build, כפי שמוצגים ב-Cloud Build במסוף Google Cloud:
שלב הטמעת הנתונים
השלב הזה אחראי לטיפול בלוגיקה של יצירת ה-build. הוא קורא, מנקה וכותב משתני סביבה שהוגדרו על ידי משתמשים. הוא גם מבטל את ההפניות ומוצמדת את כל הסודות שצוינו בקובץ apphosting.yaml
.
שלב ה-build
זהו הליבה של תהליך ה-build, והוא אחראי ליצירת קובץ אימג' בקונטיינר שאפשר להריץ וקובץ bundle.yaml
שמגדיר את תצורת ה-build.
הוא משתמש ב-Cloud Native Buildpacks כדי לארוז את האפליקציה ביעילות. מידע נוסף על הקובץ bundle.yaml
זמין ב-github.
Buildpacks אחראים על המרת קוד המקור של האפליקציה לקובצי אימג' בקונטיינרים שמוכנים לייצור. Firebase App Hosting שרשר כמה buildpacks כדי להשלים את תהליך ה-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 נארזים ונשלחים לקצה העורפי של App Hosting. לאחר מכן, הקצה העורפי של App Hosting משתמש במידע הזה כדי להגדיר את Cloud Run עם ההגדרות המתאימות.
מידע נוסף
כל תהליך ה-build של App Hosting הוא בקוד פתוח.
- קוד ה-buildpack נמצא במאגר ה-buildpacks של Google Cloud
- הקוד של מתאמי המסגרת נמצא ב-firebase-framework-tools
- מידע נוסף על Cloud Native Buildpacks ועל Cloud Build