กระบวนการบิลด์ App Hosting

Firebase App Hosting ใช้ Cloud Build เพื่อแปลงซอร์สโค้ดของแอปพลิเคชัน เป็นรูปแบบคอนเทนเนอร์ที่เหมาะสำหรับการทำให้ใช้งานได้ใน Cloud Run

กระบวนการบิลด์จะดำเนินการผ่านขั้นตอนสำคัญต่อไปนี้

  1. ubuntu: การเริ่มต้น Workspace

  2. preparer: รวบรวมซอร์สโค้ดและการกำหนดค่าของแอปพลิเคชัน

  3. pre-buildpack: เตรียมสภาพแวดล้อม Buildpack

  4. build: ติดตั้งการอ้างอิงและสร้างแอปพลิเคชัน

  5. publisher: ทำให้คอนเทนเนอร์Cloud Runสำหรับการใช้งานจริงเสร็จสมบูรณ์

ขั้นตอนทั้ง 5 นี้สอดคล้องกับขั้นตอนการสร้างที่แสดงใน Cloud Build ในคอนโซลGoogle Cloud โดยตรง

ภาพหน้าจอของมุมมองคอนโซล Google Cloud ของขั้นตอน Cloud Build

การเริ่มต้น 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 หลายรายการเข้าด้วยกันเพื่อทำกระบวนการบิลด์ให้เสร็จสมบูรณ์:

  1. Runtime Buildpack: ตรวจสอบว่ามีคอมโพเนนต์ที่จำเป็นทั้งหมดสำหรับการเรียกใช้แอปพลิเคชัน Node.js พื้นฐาน และติดตั้งการอ้างอิง
  2. Monorepo Buildpack: กำหนดค่า Buildpack ในภายหลังเพื่อจัดการสถานการณ์ Monorepo ที่แตกต่างกัน
  3. Framework Buildpack: ติดตั้งอะแดปเตอร์เฟรมเวิร์กที่ถูกต้อง (เช่น Angular หรือ Next.js) และเตรียม Buildpack ในภายหลัง

    อะแดปเตอร์เฟรมเวิร์กมีหน้าที่เรียกใช้คำสั่งการสร้างที่พร้อมใช้งานจริง และแมปค่ากำหนดค่าที่เกี่ยวข้องกับเฟรมเวิร์กเป็น รูปแบบมาตรฐานที่ App Hosting อ่านได้

  4. Package Manager Buildpack: ดำเนินการติดตั้งการอ้างอิงและ สร้างแอปโดยใช้ npm, yarn หรือ pnpm

  5. 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 เป็นโอเพนซอร์ส