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

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