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

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

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

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

  • โค้ดแอปพลิเคชันของคุณจัดเก็บอยู่ใน GitHub แล้ว
  • คุณได้สร้างโปรเจ็กต์ที่แตกต่างกันสำหรับแต่ละสภาพแวดล้อมแล้ว เช่น my-production-firebase-project และ my-staging-firebase-project อย่าลืมติดแท็กโปรเจ็กต์ Firebase เวอร์ชันที่ใช้งานจริงด้วยประเภทสภาพแวดล้อม"production"
  • ในแต่ละโปรเจ็กต์ คุณได้สร้างแบ็กเอนด์ App Hosting โดยตั้งค่าสาขาที่ใช้งานอยู่เป็นสาขา GitHub ที่ต้องการทำให้ใช้งานได้ (เช่น main) ดูข้อมูลเพิ่มเติมที่หัวข้อเริ่มต้นใช้งาน App Hosting

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

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

ในการเริ่มต้นใช้งาน ให้สร้างไฟล์ 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 หรือด้วยตนเองผ่านคอนโซล) 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.appspot.com
    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.appspot.com
    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 ต่อได้

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