ऐप्लिकेशन होस्टिंग पर डिप्लॉय करने के अन्य तरीके

हमारा सुझाव है कि ज़्यादातर मामलों में, Firebase कंसोल से ऑटोमैटिक रोलआउट या मैन्युअल तरीके से ट्रिगर किए गए रोलआउट का इस्तेमाल करें. हालांकि, आपको ज़्यादा बेहतर तरीके से मनमुताबिक बनाए गए डिप्लॉयमेंट फ़्लो की ज़रूरत पड़ सकती है. App Hosting को पसंद के मुताबिक डिप्लॉय करने के कई विकल्प हैं.

सोर्स से डिप्लॉय करना

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

सोर्स से डिप्लॉय करने पर, App Hosting आपके सोर्स कोड को Google Cloud Storage बकेट में अपलोड करता है. इसके बाद, Cloud Build में आपके फ़्रेमवर्क की बिल्ड कमांड चलाता है. इसके बाद, कंपाइल किए गए आर्टफ़ैक्ट को Cloud Run और Cloud CDN पर डिप्लॉय करता है. GitHub डिप्लॉयमेंट की तरह ही, लोकल सोर्स डिप्लॉयमेंट के लिए भी बिल्ड प्रोसेस का इस्तेमाल किया जाता है. अगर आपके प्रोजेक्ट में .gitignore फ़ाइल मौजूद है, तो उसमें मौजूद फ़ाइलों और फ़ोल्डर को आपके डिप्लॉयमेंट से बाहर रखा जाता है.

Firebase सीएलआई या Firebase कंसोल का इस्तेमाल करके, किसी लोकल सोर्स से डिप्लॉय किया जा सकता है.

आईएम की ज़रूरी अनुमतियां और बुनियादी ढांचे का सेटअप

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

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

शुरुआती ऑनबोर्डिंग के लिए अनुमतियां (किसी जगह पर पहली बार डिप्लॉयमेंट)

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

सेटअप करने के लिए, ये अनुमतियां ज़रूरी हैं:

  • Enable Storage API: serviceusage.services.enable
  • सोर्स बकेट बनाना: storage.buckets.create और storage.buckets.list
  • सर्विस एजेंट को कॉन्फ़िगर करें: resourcemanager.projects.setIamPolicy को App Hosting पढ़ने का ऐक्सेस (roles/storage.objectViewer) दें, ताकि वह बिल्ड के दौरान अपलोड किए गए कोड को फ़ेच कर सके.

शुरुआती डिप्लॉयमेंट के लिए, GCS बकेट को 30 दिनों के लाइफ़साइकल के साथ बनाया जाता है. इसके बाद, बकेट को मिटा दिया जाता है. हालांकि, इस समयावधि को Cloud Console में मैनेज किया जा सकता है. इसके लिए, Cloud Storage -> बकेट -> लाइफ़साइकल -> नियम पर जाएं. ऑब्जेक्ट के लाइफ़साइकल मैनेज करना लेख पढ़ें.

जगह की जानकारी की सुविधा शुरू होने के बाद, आगे की प्रोसेस के लिए अनुमतियां

किसी जगह के लिए सोर्स बकेट और भूमिकाओं को बाइंड करने की प्रोसेस पूरी होने के बाद, डेवलपर, एडिटर या App Hosting एडमिन अपडेट डिप्लॉय कर सकते हैं. यह प्रोसेस, सीएलआई की मदद से डिप्लॉय करके या कंसोल सेटअप करके पूरी की जा सकती है. सामान्य डिप्लॉयमेंट के लिए, प्रोजेक्ट-लेवल की एडमिन अनुमतियों की ज़रूरत नहीं होती.

ऐक्टिव डिप्लॉयमेंट की अनुमतियों में ये शामिल हैं:

  • बकेट की पुष्टि करें: storage.buckets.list
  • सोर्स का संग्रह अपलोड करें: storage.objects.create
  • ट्रिगर बनाना और उसे रोल आउट करना: स्टैंडर्ड App Hosting अनुमतियां (apphosting.builds.create और apphosting.rollouts.create)

Firebase CLI की मदद से सोर्स से डिप्लॉय करना

Firebase सीएलआई v14.4.0 और इसके बाद के वर्शन की मदद से, अपने ऐप्लिकेशन के सोर्स कोड और कॉन्फ़िगरेशन को सीधे अपनी लोकल मशीन से Firebase पर पुश किया जा सकता है. अगर पहले से ही Firebase के अन्य डिप्लॉयमेंट (जैसे कि सुरक्षा के नियम या फ़ंक्शन) मैनेज किए जा रहे हैं और आपको अपने वेब ऐप्लिकेशन और बैकएंड सेवाओं को एक साथ डिप्लॉय करना है, तो यह तरीका आपके लिए फ़ायदेमंद है.

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

  • आपके प्रोजेक्ट, Blaze प्लान पर होने चाहिए.
  • आपके पास firebase-tools का 14.4.0 वर्शन या इसके बाद का वर्शन होना चाहिए.

डिप्लॉयमेंट के चरण

  1. अपनी लोकल प्रोजेक्ट डायरेक्ट्री में firebase init apphosting चलाएं.
  2. जब आपसे पूछा जाए, तब किसी मौजूदा प्रोजेक्ट का इस्तेमाल करें को चुनें. इसके बाद, अपना टारगेट Firebase प्रोजेक्ट चुनें.
  3. डिप्लॉय करने के लिए, नया या मौजूदा बैकएंड चुनें. इस चरण में, आपकी स्थानीय डायरेक्ट्री के लिए App Hosting डिप्लॉयमेंट सेट अप किए जाते हैं. साथ ही, आपसे कॉन्फ़िगरेशन की जानकारी मांगी जाती है:
    • जिस बैकएंड पर डिप्लॉय करना है उसका आईडी
    • अगर नया बैकएंड बनाया जा रहा है, तो उसे डिप्लॉय करने के लिए क्षेत्र
    • आपके ऐप्लिकेशन कोड की रूट डायरेक्ट्री का पाथ
    • आपका पसंदीदा Node.js रनटाइम. वर्शन वाला रनटाइम चुनने पर, अपने-आप अपडेट होने वाली बुनियादी इमेज (एबीआईयू) की सुविधा चालू हो जाती है. इससे आपके एनवायरमेंट में सुरक्षा पैच अपने-आप लागू हो जाते हैं.
  4. App Hosting, आपकी डिप्लॉयमेंट सेटिंग को firebase.json में सेव करता है. अगर यह फ़ाइल पहले से मौजूद नहीं है, तो यह आपके लोकल प्रोजेक्ट में फ़ाइल बनाता है. शुरुआती प्रोसेस पूरी होने के बाद, सोर्स कोड को डिप्लॉय करने के लिए firebase deploy चलाएं.

firebase.json का उदाहरण

{
  "apphosting": [
    {
      "backendId": "my-backend",
      // rootDir specifies the directory containing the app to deploy, but the entire
      // parent directory of firebase.json will be zipped and uploaded to ensure that
      // dependencies outside of the app directory will be available at build time.
      "rootDir": "./my-app",
      "ignore": [
        "node_modules",
        ".git",
        "firebase-debug.log",
        "firebase-debug.*.log",
        "functions"
      ]
    }
  ]
}

Firebase कंसोल की मदद से डिप्लॉय करना (ज़िप फ़ाइल अपलोड करना)

Firebase कंसोल, कंप्रेस किए गए सोर्स संग्रह को सीधे तौर पर अपलोड करके ऐप्लिकेशन डिप्लॉय करने के लिए, ग्राफ़िकल इंटरफ़ेस उपलब्ध कराता है. यह GitHub कनेक्शन फ़्लो का विकल्प है. इसका इस्तेमाल उन मामलों में किया जा सकता है जहां आपको GitHub का इस्तेमाल नहीं करना है या आपको कोई दूसरा सीआई/सीडी सेटअप इस्तेमाल करना है.

आर्काइव किए गए अपलोड, शुरुआती बैकएंड बनाने के दौरान किए जा सकते हैं. इसके अलावा, इन्हें किसी मौजूदा बैकएंड पर मैन्युअल तरीके से रोलआउट करते समय भी किया जा सकता है. इनमें वे बैकएंड भी शामिल हैं जिन्हें मूल रूप से Firebase CLI का इस्तेमाल करके डिप्लॉय किया गया था.

इस्तेमाल किए जा सकने वाले फ़ॉर्मैट

कंसोल का अपलोडर, कंप्रेस किए गए दो संग्रह फ़ॉर्मैट की पुष्टि करता है और उन्हें स्वीकार करता है:

  • .zip
  • .tgz

ये फ़ॉर्मैट, फ़ाइल अपलोड करने वाले टूल के ब्यौरे के टेक्स्ट में साफ़ तौर पर दिखाए जाते हैं.

डिप्लॉयमेंट के चरण

विकल्प A: बैकएंड की शुरुआती ऑनबोर्डिंग के दौरान
  1. सोर्स चुनें: बैकएंड बनाने वाले विज़र्ड में, "आपको अपना ऐप्लिकेशन कैसे इंपोर्ट करना है?" चरण के दौरान, ज़िप फ़ाइल अपलोड करें चुनें.
  2. ऑनबोर्डिंग की तैयारी: "आगे बढ़ें" पर क्लिक करने से, बैकग्राउंड में तैयारी करने की प्रोसेस शुरू हो जाती है. इससे Storage API चालू हो जाता है, यह पक्का हो जाता है कि सही भूमिकाएं सेट अप की गई हैं, और बकेट को अपसर्ट किया जाता है. यूज़र इंटरफ़ेस पर, डाइनैमिक स्टेटस मैसेज के साथ लोडिंग स्पिनर दिखता है: "एपीआई चालू किया जा रहा है...", "अनुमतियों की जांच की जा रही है..." और "बकेट तैयार की जा रही है...".
    • गड़बड़ी ठीक करना और सुरक्षा के उपाय: अगर तैयारी का कोई चरण पूरा नहीं होता है (जैसे कि मालिक नहीं होने वाले किसी व्यक्ति को आईएएम की ज़रूरी अनुमतियां न होने की वजह से 403 PERMISSION_DENIED मिलता है), तो यूज़र इंटरफ़ेस (यूआई) पर एक चेतावनी दिखती है. इसमें आपको प्रोजेक्ट के मालिक से संपर्क करने के लिए कहा जाता है. स्टेप वाले नेविगेशन को लॉक कर दिया जाता है. साथ ही, समस्या हल होने तक "अगला" बटन और "पूरा करें और लागू करें" बटन काम नहीं करते.
  3. फ़ाइलें अपलोड करें: तैयारी पूरी होने के बाद, अपनी संग्रह फ़ाइल को फ़ाइल अपलोड करने वाले कॉम्पोनेंट में चुनें या खींचें.
  4. सेटिंग कॉन्फ़िगर करें: अपनी ऐप्लिकेशन रूट डायरेक्ट्री तय करें. यह डिफ़ॉल्ट रूप से / पर सेट होती है.

  5. पूरा करें और डिप्लॉय करें पर क्लिक करें: ज़िप फ़ाइल अपलोड करने के लिए, "पूरा करें" बटन बंद कर दिया जाता है. ऐसा इसलिए, क्योंकि किसी आर्काइव को सिर्फ़ एक बार अपलोड किया जा सकता है. साथ ही, बैकएंड के ठीक से काम करने के लिए, इसे तुरंत डिप्लॉय करना ज़रूरी है.

विकल्प B: मैन्युअल रोलआउट बनाना
  1. डायलॉग बॉक्स खोलें: App Hosting डैशबोर्ड में, रोलआउट बनाएं पर क्लिक करें.
  2. सोर्स चुनें: डायलॉग बॉक्स के स्टेपर में, ज़िप फ़ाइल अपलोड करें को चुनें. अगर बैकएंड में GitHub से पहले से कोई कनेक्शन नहीं है, तो "GitHub" विकल्प बंद हो जाता है.
  3. तैयारी और अपलोड करना: इस विकल्प को चुनने पर, बैकग्राउंड में तैयारी करने की वही प्रोसेस शुरू होती है जो पहले होती थी ("एपीआई चालू किया जा रहा है...", "अनुमतियां देखी जा रही हैं..." और "बकेट तैयार किया जा रहा है...") दिखते हैं. अपलोड हो जाने के बाद, अपलोडर का इस्तेमाल करके अपनी संग्रह फ़ाइल को खींचें या चुनें. इसके बाद, ऐप्लिकेशन की रूट डायरेक्ट्री तय करें. इसके बाद, बिल्ड और रोलआउट को ट्रिगर करने के लिए, डिप्लॉय करें पर क्लिक करें.

Terraform का इस्तेमाल करके डिप्लॉय करना

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

अगर आपको Terraform के बारे में नहीं पता, तो Terraform और Firebase का इस्तेमाल शुरू करना लेख पढ़ें. अगर आपको Terraform के बारे में पहले से पता है, तो सैंपल कॉन्फ़िगरेशन फ़ाइलों और अन्य App Hosting संसाधनों का इस्तेमाल शुरू किया जा सकता है.

सीआई/सीडी के लिए GitHub कनेक्शन सेट अप करना

आपके पास Firebase कंसोल में, बैकएंड की सेटिंग के डिप्लॉयमेंट टैब में जाकर, GitHub रिपॉज़िटरी को किसी भी समय कनेक्ट करने का विकल्प होता है. इससे आपको लोकल एनवायरमेंट से ऐप्लिकेशन प्रोटोटाइप डिप्लॉय करने की सुविधा मिलती है. इसके बाद, जब आप तैयार हों, तब ऑटोमेटेड सीआई/सीडी पाइपलाइन पर स्विच किया जा सकता है.

एआई टूल का इस्तेमाल करके डिप्लॉय करना

हम Firebase Studio को 22 मार्च, 2027 को बंद कर रहे हैं. आपके App Hosting बैकएंड पर इसका कोई असर नहीं पड़ेगा. हालांकि, Firebase Studio में मौजूद पब्लिश करें बटन को हटा दिया जाएगा. यूआरएल में बदलाव किए बिना अपडेट पब्लिश करना जारी रखने के लिए, अपना प्रोजेक्ट माइग्रेट करें. माइग्रेट करने का तरीका जानें.