ऐसा अक्सर होता है कि एक ही कोड बेस से कई एनवायरमेंट डिप्लॉय किए जाते हैं. हर एनवायरमेंट का कॉन्फ़िगरेशन थोड़ा अलग होता है. उदाहरण के लिए, हो सकता है कि आपको अपने स्टेजिंग एनवायरमेंट को कम सीपीयू और रैम असाइन करनी हो. इसके अलावा, यह भी हो सकता है कि आपको यह पक्का करना हो कि आपके प्रोडक्शन एनवायरमेंट में कम से कम एक इंस्टेंस चालू रहे और अनुरोधों को पूरा करने के लिए तैयार रहे. यह भी हो सकता है कि आपको इस्तेमाल किए जाने वाले एनवायरमेंट और संसाधनों के हिसाब से, अलग-अलग एनवायरमेंट वैरिएबल और सीक्रेट तय करने हों.
इस गाइड में, प्रोडक्शन और स्टेजिंग एनवायरमेंट को अलग-अलग 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 बैकएंड में, एनवायरमेंट का नाम सेटिंग होती है. इस फ़ील्ड का इस्तेमाल, आपके बैकएंड को एनवायरमेंट के हिसाब से कॉन्फ़िगरेशन फ़ाइल से मैप करने के लिए किया जाता है. इसे किसी भी समय बदला जा सकता है. हर बैकएंड के लिए, एनवायरमेंट का सिर्फ़ एक नाम सेट किया जा सकता है.
अपने बैकएंड के एनवायरमेंट का नाम सेट करने के लिए,
- Firebase कंसोल में, अपना स्टेजिंग प्रोजेक्ट चुनें. इस उदाहरण में,
my-staging-firebase-project. - होस्टिंग और सर्वरलेस > App Hosting पर जाएं.
- चुने गए बैकएंड पर, डैशबोर्ड देखें पर क्लिक करें.
- सेटिंग टैब में, एनवायरमेंट चुनें.
- एनवायरमेंट का नाम में जाकर,अपने एनवायरमेंट का नाम डालें. एनवायरमेंट को अपनी पसंद के मुताबिक नाम दिया जा सकता है. इस उदाहरण में, यह staging है.
- सेव करें पर क्लिक करें.
जब आपके बैकएंड के लिए 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 का इस्तेमाल जारी रखा जा सकता है.
अगले चरण
- ज़्यादा जानकारी: Firebase के कोडलैब के बारे में जानें. इसमें होस्ट किए गए ऐप्लिकेशन को Firebase Authentication और Google AI की सुविधाओं के साथ इंटिग्रेट किया जाता है: Next.js | Angular
- कोई कस्टम डोमेन जोड़ें.
- अपना बैकएंड कॉन्फ़िगर करें.
- रोलआउट, साइट उपयोग, और लॉग पर नज़र रखें.