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

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

इस गाइड में, प्रोडक्शन और स्टेजिंग एनवायरमेंट को अलग-अलग 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 इन दोनों फ़ाइलों को मर्ज करता है. इसमें, बुनियादी apphosting.yaml फ़ाइल के मुकाबले, एनवायरमेंट के हिसाब से बनी 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 का इस्तेमाल जारी रखा जा सकता है.

अगले चरण