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 ด้วยการกำหนดค่าที่เหมาะสม
นโยบายการล้างข้อมูลการสร้าง
Firebase App Hosting บังคับใช้นโยบายการเก็บรักษาและการล้างข้อมูลการสร้างอัตโนมัติ ภายใต้นโยบายนี้ App Hosting จะเก็บรักษาการสร้างที่สำเร็จและการแก้ไข Cloud Run ที่เกี่ยวข้องในช่วง 14 วันที่ผ่านมา นอกจากนี้ เพื่อให้คุณมีบิลด์ที่ย้อนกลับไปใช้ได้เสมอ App Hosting ยังเก็บรักษาบิลด์และการเปิดตัวที่สำเร็จล่าสุด 5 รายการไว้เสมอ ไม่ว่าจะมีอายุเท่าใดก็ตาม
App Hosting จะไม่ลบหรือนำบิลด์ที่อยู่ในส่วนการแยกการเข้าชมที่ใช้งานอยู่ หรือเชื่อมโยงกับการเปิดตัวที่อยู่ระหว่างดำเนินการออก
เมื่อการสร้างที่เก่ากว่าเกินขีดจำกัดการเก็บรักษาเหล่านี้ ระบบจะอัปเดตสถานะภายในเป็นการสร้าง EXPIRED คุณไม่สามารถย้อนกลับบิลด์ EXPIRED ได้ทันที และระบบจะนำตัวเลือกในการย้อนกลับไปใช้บิลด์เหล่านี้ออกจาก Firebase แต่คุณจะต้อง
สร้างบิลด์ใหม่ที่กำหนดเป้าหมายเป็นแหล่งที่มาเดียวกัน
(การคอมมิต Git,
คอนเทนเนอร์ใน Artifact Registry หรือ Bucket Google Cloud Storage) แล้วเปิดตัวการสร้างนั้น
วิธีหนึ่งในการประหยัดทรัพยากรการสร้างคือการควบคุมความถี่ในการทริกเกอร์การเปิดตัวอัตโนมัติ ดู จัดการการเปิดตัวอัตโนมัติ
ดูข้อมูลเพิ่มเติม
กระบวนการบิลด์ทั้งหมดของ App Hosting เป็นโอเพนซอร์ส
- โค้ด Buildpack อยู่ใน ที่เก็บ Google Cloud Buildpacks
- โค้ดสำหรับอะแดปเตอร์เฟรมเวิร์กอยู่ในที่เก็บ firebase-framework-tools
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ Cloud Native Buildpacks และ Cloud Build