कोड बेस से कई एनवायरमेंट डिप्लॉय करें

आम तौर पर, एक ही कोडबेस से कई एनवायरमेंट डिप्लॉय किए जाते हैं. हर एनवायरमेंट का कॉन्फ़िगरेशन थोड़ा अलग होता है. उदाहरण के लिए, हो सकता है कि आप अपने स्टैजिंग एनवायरमेंट में कम सीपीयू और रैम असाइन करना चाहें. इसके अलावा, यह पक्का करना चाहें कि आपके प्रोडक्शन एनवायरमेंट में कम से कम एक इंस्टेंस चालू रहे और वह अनुरोधों को पूरा करने के लिए तैयार रहे. आपको एनवायरमेंट और संसाधनों के हिसाब से, अलग-अलग एनवायरमेंट वैरिएबल और 'गुप्त जानकारी' भी तय करनी पड़ सकती है.

इस गाइड में, प्रोडक्शन और स्टेजिंग एनवायरमेंट को अलग-अलग Firebase प्रोजेक्ट में डिप्लॉय करने का तरीका बताया गया है. एक जैसे सिद्धांतों का पालन करते हुए, दूसरे तरह के एनवायरमेंट में डिप्लॉय किया जा सकता है. एनवायरमेंट के बारे में ज़्यादा जानने के लिए, एनवायरमेंट की खास जानकारी और Firebase प्रोजेक्ट सेट अप करने के सबसे सही तरीके देखें.

ज़रूरी शर्तें

  • आपके ऐप्लिकेशन का कोड, GitHub में पहले से ही सेव है.
  • आपने अपने हर एनवायरमेंट के लिए पहले से ही एक अलग प्रोजेक्ट बना लिया हो. उदाहरण के लिए, my-production-firebase-project और my-staging-firebase-project. अपने प्रोडक्शन Firebase प्रोजेक्ट को "प्रोडक्शन" एनवायरमेंट टाइप के साथ टैग करना न भूलें.
  • आपने हर प्रोजेक्ट में एक App Hosting बैकएंड बनाया है. इसमें लाइव ब्रैंच को उस GitHub ब्रैंच पर सेट किया गया है जिसे आपको डिप्लॉय करना है, जैसे कि main. ज़्यादा जानकारी के लिए, App Hosting का इस्तेमाल शुरू करना लेख पढ़ें.

पहला चरण: apphosting.yaml में डिफ़ॉल्ट कॉन्फ़िगरेशन बनाना

App Hosting, apphosting.yaml नाम की कॉन्फ़िगरेशन फ़ाइल के साथ काम करता है. इसकी मदद से, आपके ऐप्लिकेशन के लिए रनटाइम सेटिंग (सीपीयू, एक साथ कई काम करने की सुविधा, मेमोरी की सीमाएं वगैरह) और एनवायरमेंट वैरिएबल मैनेज किए जा सकते हैं. साथ ही, Cloud Secret Manager की मदद से मैनेज किए गए सीक्रेट के रेफ़रंस भी मैनेज किए जा सकते हैं. इससे, सोर्स कंट्रोल में जांच करना सुरक्षित हो जाता है. ज़्यादा जानकारी के लिए, बैकएंड कॉन्फ़िगर करना देखें.

शुरू करने के लिए, अपने ऐप्लिकेशन की रूट डायरेक्ट्री में apphosting.yaml फ़ाइल बनाएं. यह फ़ॉलबैक कॉन्फ़िगरेशन फ़ाइल है. इसका इस्तेमाल, एनवायरमेंट से जुड़ी कॉन्फ़िगरेशन फ़ाइल नहीं मिलने पर किया जाता है. apphosting.yaml में सेव की गई वैल्यू, डिफ़ॉल्ट तौर पर चालू होनी चाहिए. इन्हें सभी एनवायरमेंट में इस्तेमाल किया जा सकता है.

अगले सेक्शन में, किसी खास एनवायरमेंट के लिए apphosting.yaml में डिफ़ॉल्ट वैल्यू को बदलने का तरीका बताया गया है. इस उदाहरण में, स्टेजिंग एनवायरमेंट बनाया गया है.

पहला चरण: एनवायरमेंट का नाम सेट करना

हर App Hosting बैकएंड में एनवायरमेंट का नाम सेटिंग होती है. इस फ़ील्ड का इस्तेमाल, आपके बैकएंड को एनवायरमेंट के हिसाब से कॉन्फ़िगरेशन फ़ाइल से मैप करने के लिए किया जाता है. साथ ही, इसे किसी भी समय बदला जा सकता है. हर बैकएंड के लिए, सिर्फ़ एक एनवायरमेंट का नाम सेट किया जा सकता है.

अपने बैकएंड के एनवायरमेंट का नाम सेट करने के लिए,

  1. Firebase कंसोल में, अपना स्टैजिंग प्रोजेक्ट चुनें. इस उदाहरण में, my-staging-firebase-project.
  2. बाएं नेविगेशन से App Hosting को चुनें.
  3. चुने गए बैकएंड पर, डैशबोर्ड देखें पर क्लिक करें.
  4. सेटिंग टैब में, डिप्लॉयमेंट चुनें.
  5. एनवायरमेंट का नाम में जाकर,अपने एनवायरमेंट का नाम डालें. एनवायरमेंट को अपनी पसंद का नाम दिया जा सकता है. इस उदाहरण में, यह स्टेजिंग है.
  6. सेव करें पर क्लिक करें.

जब आपके बैकएंड के लिए App Hosting रोल आउट ट्रिगर किया जाता है (git push पर या कंसोल के ज़रिए मैन्युअल रूप से), तो App Hosting apphosting.yaml पर वापस जाने से पहले, apphosting.ENVIRONMENT_NAME.yaml फ़ाइल की जांच करेगा.

दूसरा चरण: एनवायरमेंट के हिसाब से apphosting.yaml फ़ाइल बनाना

पर्यावरण के हिसाब से कॉन्फ़िगरेशन के लिए, apphosting.ENVIRONMENT_NAME.yaml नाम की एक फ़ाइल बनाएं, ताकि पर्यावरण के हिसाब से खास बदलावों के बारे में बताया जा सके. इस फ़ाइल का फ़ॉर्मैट, डिफ़ॉल्ट apphosting.yaml जैसा ही होता है. साथ ही, यह apphosting.yaml के साथ आपके ऐप्लिकेशन की रूट डायरेक्ट्री में मौजूद होनी चाहिए.

बिल्ड के समय App Hosting, इन दोनों फ़ाइलों को मर्ज करता है. इसके लिए, पर्यावरण के हिसाब से बनी 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 वैल्यू (जैसे, सीपीयू) को ओवरराइट कर दिया गया है. साथ ही, ओवरलैप होने वाले एनवायरमेंट वैरिएबल को भी बदल दिया गया है.

तीसरा चरण: अपना कोडबेस डिप्लॉय करना

अपने एनवायरमेंट के हिसाब से बनाई गई 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 का इस्तेमाल जारी रखा जा सकता है.

अगले चरण