Firebase App Hosting ใช้ Cloud Build เพื่อแปลงซอร์สโค้ดของแอปพลิเคชัน เป็นรูปแบบคอนเทนเนอร์ที่เหมาะสำหรับการทำให้ใช้งานได้ใน Cloud Run
กระบวนการบิลด์จะดำเนินการผ่านขั้นตอนสำคัญต่อไปนี้
ubuntu: การเริ่มต้น Workspace
preparer: รวบรวมซอร์สโค้ดและการกำหนดค่าของแอปพลิเคชัน
pre-buildpack: เตรียมสภาพแวดล้อม Buildpack
build: ติดตั้งการอ้างอิงและสร้างแอปพลิเคชัน
publisher: ทำให้คอนเทนเนอร์สำหรับการใช้งานจริงเสร็จสมบูรณ์Cloud Run
ขั้นตอนทั้ง 5 นี้สอดคล้องกับขั้นตอนการบิลด์ที่แสดงใน Cloud Build ในคอนโซลGoogle Cloud โดยตรง

การเริ่มต้น Workspace
ขั้นตอนนี้สอดคล้องกับขั้นตอนการบิลด์ ubuntu โดยจะเริ่มต้น Workspace ของบิลด์ เพื่อให้มั่นใจว่ามีการตั้งค่าสิทธิ์ของไฟล์ที่ถูกต้องสำหรับไดเรกทอรีที่ขั้นตอนการบิลด์ในภายหลังจะใช้
Preparer
ขั้นตอนนี้มีหน้าที่จัดการตรรกะก่อนการบิลด์ โดยจะอ่าน ล้าง และเขียนตัวแปรสภาพแวดล้อมที่ผู้ใช้กำหนด นอกจากนี้ยังยกเลิกการอ้างอิงและปักหมุดข้อมูลลับที่ระบุไว้ในไฟล์ apphosting.yaml ด้วย
Pre-buildpack
ขั้นตอนนี้จะเตรียมสภาพแวดล้อมสำหรับวงจรการทำงานของ Cloud Native Buildpacks ซึ่งเกี่ยวข้องกับการเรียกใช้ Shim ที่แปลการกำหนดค่าและตัวแปรสภาพแวดล้อมที่เตรียมไว้ในขั้นตอนก่อนหน้าเป็นรูปแบบที่เครื่องมือ CNB คาดหวัง
บิลด์
ขั้นตอนนี้เป็นขั้นตอนหลักของกระบวนการบิลด์ ซึ่งมีหน้าที่สร้างอิมเมจคอนเทนเนอร์ที่เรียกใช้ได้และไฟล์ bundle.yaml ที่กำหนดค่าการบิลด์
โดยจะใช้ Cloud Native Buildpacks
และไบนารีของ Lifecycle Creator
เพื่อแพ็กเกจแอปพลิเคชัน
อย่างมีประสิทธิภาพ ดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ bundle.yaml ได้ที่
GitHub
Buildpack มีหน้าที่แปลงซอร์สโค้ดของแอปพลิเคชันเป็นอิมเมจคอนเทนเนอร์ที่พร้อมใช้งานจริง Firebase App Hosting จะเชื่อมโยง Buildpack หลายรายการเข้าด้วยกันเพื่อดำเนินการกระบวนการบิลด์ให้เสร็จสมบูรณ์
- Runtime Buildpack: ตรวจสอบว่ามีคอมโพเนนต์ที่จำเป็นทั้งหมดสำหรับการเรียกใช้แอปพลิเคชัน Node.js พื้นฐาน และติดตั้งการอ้างอิง
- Monorepo Buildpack: กำหนดค่า Buildpack ในภายหลังเพื่อจัดการสถานการณ์ Monorepo ที่แตกต่างกัน
Framework Buildpack: ติดตั้งอะแดปเตอร์เฟรมเวิร์กที่ถูกต้อง (เช่น Angular หรือ Next.js) และเตรียม Buildpack ในภายหลัง
อะแดปเตอร์เฟรมเวิร์กมีหน้าที่เรียกใช้คำสั่งบิลด์ที่พร้อมใช้งานจริง และแมปค่ากำหนดค่าที่เกี่ยวข้องกับเฟรมเวิร์กเป็น รูปแบบมาตรฐานที่ App Hosting อ่านได้
Package Manager Buildpack: ดำเนินการติดตั้งการอ้างอิงและ สร้างแอปโดยใช้ npm, yarn หรือ pnpm
Output Bundle Buildpack: กำหนดคำสั่งเรียกใช้และเตรียมเอาต์พุต บันเดิลสำหรับการดำเนินการ
ผู้เผยแพร่โฆษณา
ขั้นสุดท้ายนี้จะแพ็กเกจข้อมูลทั้งหมดที่แยกออกมาจากซอร์สโค้ดของแอปพลิเคชัน รวมถึงอิมเมจคอนเทนเนอร์บิลด์ แล้วส่งไปยังApp Hostingแบ็กเอนด์ จากนั้นแบ็กเอนด์ของ App Hosting จะใช้ข้อมูลนี้เพื่อตั้งค่า Cloud Run ด้วยการกำหนดค่าที่เหมาะสม
ดูข้อมูลเพิ่มเติม
กระบวนการบิลด์ทั้งหมดของ App Hosting เป็นโอเพนซอร์ส
- โค้ด Buildpack อยู่ใน ที่เก็บ Google Cloud Buildpacks
- โค้ดสำหรับอะแดปเตอร์เฟรมเวิร์กอยู่ในที่เก็บ firebase-framework-tools
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ Cloud Native Buildpacks และ Cloud Build