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

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

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

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

  • आपके ऐप्लिकेशन का कोड, GitHub में पहले से सेव है.
  • आपने अपने हर एनवायरमेंट के लिए अलग-अलग प्रोजेक्ट बनाए हैं. उदाहरण के लिए, my-production-firebase-project और my-staging-firebase-project. पक्का करें कि आपने अपने प्रोडक्शन Firebase प्रोजेक्ट को "production" एनवायरमेंट टाइप के साथ टैग किया हो.
  • आपने हर प्रोजेक्ट में, 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. एनवायरमेंट का नाम में जाकर,अपने एनवायरमेंट का नाम डालें. एनवायरमेंट को अपनी पसंद के मुताबिक नाम दिया जा सकता है. इस उदाहरण में, यह staging है.
  6. सेव करें पर क्लिक करें.

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

तीसरा चरण: एनवायरमेंट के हिसाब से 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.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 की कुछ वैल्यू, जैसे कि सीपीयू के साथ-साथ, ओवरलैप होने वाले एनवायरमेंट वैरिएबल भी बदल दिए गए हैं.

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

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

अगले चरण