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

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

इस गाइड में, प्रोडक्शन और स्टेजिंग एनवायरमेंट को अलग-अलग 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 रोलआउट ट्रिगर होता है (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.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 का इस्तेमाल जारी रखा जा सकता है.

अगले चरण