ทำให้สภาพแวดล้อมหลายอย่างใช้งานได้จากฐานของโค้ด

โดยทั่วไปแล้ว เรามักจะทำให้สภาพแวดล้อมหลายรายการใช้งานได้จากฐานของโค้ดเดียวกัน แต่ละรายการมีการกำหนดค่าที่แตกต่างกันเล็กน้อย เช่น คุณอาจต้องการกำหนด CPU และ RAM น้อยลงให้กับสภาพแวดล้อมการทดสอบ หรืออาจต้องการตรวจสอบว่าสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์มีอินสแตนซ์อย่างน้อย 1 รายการที่ใช้งานอยู่และพร้อมให้บริการคำขอ นอกจากนี้ คุณยังอาจต้องการระบุตัวแปรสภาพแวดล้อมและข้อมูลลับที่แตกต่างกันไปตามสภาพแวดล้อมและทรัพยากรที่ต้องการใช้

คู่มือนี้อธิบายวิธีทำให้สภาพแวดล้อมที่ใช้งานจริงและสภาพแวดล้อมการทดสอบใช้งานได้ โดยแต่ละสภาพแวดล้อมจะอยู่ในโปรเจ็กต์ Firebase แยกกัน คุณสามารถทำให้สภาพแวดล้อมประเภทอื่นๆ ใช้งานได้โดยใช้หลักการเดียวกัน ดูข้อมูลเพิ่มเติมเกี่ยวกับสภาพแวดล้อมได้ที่ ภาพรวมของ สภาพแวดล้อมและแนวทางปฏิบัติแนะนำ ทั่วไปสำหรับการตั้งค่าโปรเจ็กต์ Firebase

ข้อกำหนดเบื้องต้น

ขั้นตอนที่ 0: สร้างการกำหนดค่าเริ่มต้นใน apphosting.yaml

App Hosting รองรับไฟล์การกำหนดค่าที่ชื่อว่า apphosting.yaml เพื่อจัดการ การตั้งค่ารันไทม์ (CPU, การทำงานพร้อมกัน, ขีดจำกัดหน่วยความจำ ฯลฯ) และตัวแปรสภาพแวดล้อม สำหรับแอป นอกจากนี้ยังรองรับการอ้างอิงข้อมูลลับที่จัดการด้วย Cloud Secret Manager ซึ่งทำให้ตรวจสอบการควบคุมแหล่งที่มาได้อย่างปลอดภัย ดูข้อมูลเพิ่มเติมได้ที่กำหนดค่าแบ็กเอนด์

หากต้องการเริ่มต้นใช้งาน ให้สร้างไฟล์ apphosting.yaml ในไดเรกทอรีรากของแอป ซึ่งเป็นไฟล์การกำหนดค่าสำรองที่จะใช้เมื่อไม่พบไฟล์การกำหนดค่าเฉพาะสภาพแวดล้อม ค่าที่จัดเก็บไว้ใน apphosting.yaml ควรเป็นค่าเริ่มต้นที่ใช้ได้อย่างปลอดภัยในทุกสภาพแวดล้อม

ส่วนถัดไปจะอธิบายวิธีลบล้างค่าเริ่มต้นใน apphosting.yaml สำหรับสภาพแวดล้อมที่เฉพาะเจาะจง โฟลว์ตัวอย่างนี้จะสร้างสภาพแวดล้อมการทดสอบ

ขั้นตอนที่ 1: ตั้งชื่อสภาพแวดล้อม

แบ็กเอนด์ App Hosting แต่ละรายการมีการตั้งค่าชื่อสภาพแวดล้อม ช่องนี้ใช้เพื่อแมปแบ็กเอนด์กับไฟล์การกำหนดค่าเฉพาะสภาพแวดล้อม และสามารถเปลี่ยนแปลงได้ทุกเมื่อ คุณตั้งชื่อสภาพแวดล้อมได้เพียงชื่อเดียวต่อแบ็กเอนด์

วิธีตั้งชื่อสภาพแวดล้อมของแบ็กเอนด์

  1. ในคอนโซล Firebase ให้เลือกโปรเจ็กต์การทดสอบ (ในตัวอย่างนี้คือ my-staging-firebase-project)
  2. ไปที่โฮสติ้งและแบบไม่ต้องใช้เซิร์ฟเวอร์ > App Hosting
  3. คลิกดูแดชบอร์ด ในแบ็กเอนด์ที่เลือก
  4. ในแท็บการตั้งค่า ให้เลือกสภาพแวดล้อม
  5. ในส่วนชื่อสภาพแวดล้อม ให้ป้อนชื่อสภาพแวดล้อม คุณตั้งชื่อสภาพแวดล้อมได้ตามต้องการ ในตัวอย่างนี้คือ staging
  6. คลิกบันทึก

เมื่อมีการทริกเกอร์การเปิดตัว App Hosting สำหรับแบ็กเอนด์ (เมื่อใช้ git push หรือด้วยตนเองผ่านFirebase คอนโซล) App Hosting จะตรวจสอบ ไฟล์ apphosting.ENVIRONMENT_NAME.yaml ก่อนที่จะ กลับไปใช้ apphosting.yaml

ขั้นตอนที่ 2: สร้างไฟล์ apphosting.yaml เฉพาะสภาพแวดล้อม

สำหรับการกำหนดค่าเฉพาะสภาพแวดล้อม ให้สร้างไฟล์ชื่อ apphosting.ENVIRONMENT_NAME.yaml เพื่อ ระบุการลบล้างเฉพาะสภาพแวดล้อม ไฟล์นี้มีรูปแบบเดียวกับ ค่าเริ่มต้น apphosting.yaml และต้องอยู่ใน ไดเรกทอรีรากของแอปพร้อมกับ apphosting.yaml

ในเวลาบิลด์ App Hosting จะผสานไฟล์ทั้ง 2 ไฟล์นี้ โดยให้ความสำคัญกับค่าในไฟล์ YAML เฉพาะสภาพแวดล้อมมากกว่าไฟล์ apphosting.yaml

ในตัวอย่างนี้ คุณจะสร้างไฟล์ชื่อ apphosting.staging.yaml ในไดเรกทอรีรากของแอป


runConfig:
  cpu: 1
  memoryMiB: 512
  concurrency: 5

env:
-   variable: API_URL
    value: api.staging.service.com
    availability:
      -   BUILD

-   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

สมมติว่าคุณมีไฟล์ apphosting.yaml ที่มีลักษณะดังนี้

runConfig:
  cpu: 3
  memoryMiB: 1024
  maxInstances: 4
  minInstances: 0
  concurrency: 100

env:
-   variable: API_URL
    value: api.service.com
    availability:
      -   BUILD
      -   RUNTIME

-   variable: STORAGE_BUCKET
    value: mybucket.firebasestorage.app
    availability:
      -   RUNTIME

-   variable: API_KEY
    secret: secretIDforAPI

เอาต์พุตที่ผสานสุดท้าย ซึ่งคุณตรวจสอบได้ในบันทึกของ Cloud Build จะมีลักษณะดังนี้

runConfig:
  cpu: 1
  memoryMiB: 512
  maxInstances: 4
  minInstances: 0
  concurrency: 5

env:
-   variable: API_URL
    value: api.staging.service.com
    availability:
      -   BUILD

-   variable: STORAGE_BUCKET
    value: mybucket.firebasestorage.app
    availability:
      -   RUNTIME

-   variable: API_KEY
    secret: secretIDforAPI

-   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

โปรดทราบว่าค่า runConfig บางค่า เช่น CPU จะถูกเขียนทับ รวมถึงตัวแปรสภาพแวดล้อมที่ซ้ำกันด้วย

ขั้นตอนที่ 3: ทำให้ฐานของโค้ดใช้งานได้

เมื่อแก้ไขไฟล์ apphosting.ENVIRONMENT_NAME.yaml เฉพาะสภาพแวดล้อมเสร็จแล้ว ให้พุชไฟล์ไปยัง GitHub โดยทำดังนี้

$ git add apphosting.<ENVIRONMENT_NAME>.yaml
$ git commit -m "Added environment specific yaml file"
$ git push

แบ็กเอนด์ที่ติดแท็กด้วยชื่อสภาพแวดล้อมนี้จะใช้ค่าการลบล้างเฉพาะที่คุณระบุไว้ในไฟล์ YAML ที่เกี่ยวข้อง และจะกลับไปใช้ apphosting.yaml เมื่อไม่พบค่า สำหรับแบ็กเอนด์ที่ไม่มีชื่อสภาพแวดล้อมที่เชื่อมโยง คุณจะใช้ apphosting.yaml ต่อไปได้

ขั้นตอนถัดไป