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

การเริ่มต้นพื้นที่ทำงาน
ขั้นตอนนี้สอดคล้องกับขั้นตอนการสร้าง Ubuntu โดยจะเริ่มต้นพื้นที่ทำงานของบิลด์ เพื่อให้มั่นใจว่ามีการตั้งค่าสิทธิ์ในไฟล์ที่ถูกต้องสำหรับไดเรกทอรีที่ใช้โดยขั้นตอนการบิลด์ที่ตามมา
ผู้จัดเตรียม
ขั้นตอนนี้มีหน้าที่จัดการตรรกะก่อนการสร้าง โดยจะอ่าน ล้าง และเขียนตัวแปรสภาพแวดล้อมที่ผู้ใช้กำหนด นอกจากนี้ยังยกเลิกการอ้างอิงและปักหมุดข้อมูลลับที่ระบุไว้ในไฟล์ 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 พื้นฐานและติดตั้งทรัพยากร Dependency แล้ว
- Monorepo Buildpack: กำหนดค่า Buildpack ที่ตามมาเพื่อจัดการสถานการณ์ Monorepo ต่างๆ
Framework Buildpack: ติดตั้งอะแดปเตอร์เฟรมเวิร์กที่ถูกต้อง (เช่น Angular หรือ Next.js) และเตรียม Buildpack ที่ตามมา
อะแดปเตอร์เฟรมเวิร์กมีหน้าที่เรียกใช้คำสั่งบิลด์ที่ใช้งานจริงและแมปค่าการกำหนดค่าเฉพาะเฟรมเวิร์กที่เกี่ยวข้องกับรูปแบบมาตรฐานที่ App Hosting อ่านได้
Buildpack ของเครื่องมือจัดการแพ็กเกจ: ดำเนินการติดตั้งทรัพยากร Dependency และสร้างแอปโดยใช้ 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 หรือที่เก็บข้อมูล Google Cloud Storage) แล้วเปิดตัวบิลด์นั้น
วิธีหนึ่งในการประหยัดทรัพยากรบิลด์คือการควบคุมความถี่ที่คุณทริกเกอร์การเปิดตัวอัตโนมัติ ดูจัดการการเปิดตัวอัตโนมัติ
ดูข้อมูลเพิ่มเติม
กระบวนการสร้าง App Hosting ทั้งหมดเป็นโอเพนซอร์ส
- โค้ด Buildpack อยู่ในที่เก็บ Buildpack ของ Google Cloud
- โค้ดสำหรับอะแดปเตอร์เฟรมเวิร์กอยู่ในที่เก็บ apphosting-adapters
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ Cloud Native Buildpack และ Cloud Build