हमारा सुझाव है कि ज़्यादातर मामलों में, Firebase कंसोल से ऑटोमैटिक रोलआउट या मैन्युअल तरीके से ट्रिगर किए गए रोलआउट का इस्तेमाल करें. हालांकि, आपको ज़्यादा मनमुताबिक डिप्लॉयमेंट फ़्लो की ज़रूरत पड़ सकती है. App Hosting को पसंद के मुताबिक डिप्लॉय करने के कई विकल्प हैं.
सोर्स से डिप्लॉय करना
सोर्स से डिप्लॉय करने की सुविधा की मदद से, अपने ऐप्लिकेशन के सोर्स कोड और कॉन्फ़िगरेशन को सीधे App Hosting पर पुश किया जा सकता है. इसके लिए, GitHub से हमेशा कनेक्ट रहने की ज़रूरत नहीं होती.
सोर्स से डिप्लॉय करने पर, App Hosting आपके सोर्स कोड को Google Cloud Storage बकेट में अपलोड करता है. इसके बाद, Cloud Build में आपके फ़्रेमवर्क की बिल्ड कमांड चलाता है. इसके बाद, कंपाइल किए गए आर्टफ़ैक्ट को Cloud Run और Cloud CDN पर डिप्लॉय करता है. GitHub डिप्लॉयमेंट की तरह ही, लोकल सोर्स डिप्लॉयमेंट के लिए भी एक ही बिल्ड प्रोसेस का इस्तेमाल किया जाता है. अगर आपके प्रोजेक्ट में .gitignore फ़ाइल मौजूद है, तो इसमें मौजूद फ़ाइलों और फ़ोल्डर को डिप्लॉयमेंट से बाहर रखा जाता है.
Firebase सीएलआई या Firebase कंसोल का इस्तेमाल करके, लोकल सोर्स से डिप्लॉय किया जा सकता है.
ज़रूरी IAM अनुमतियां और बुनियादी ढांचे का सेटअप
Firebase CLI और Firebase कंसोल, दोनों ही आपके सोर्स आर्काइव को सेव करने और बनाने के लिए एक ही बैकएंड इन्फ़्रास्ट्रक्चर का इस्तेमाल करते हैं. इसलिए, आईएम की अनुमतियों से जुड़ी एक जैसी ज़रूरी शर्तें, डिप्लॉयमेंट के दोनों तरीकों पर लागू होती हैं.
ज़रूरी शर्तें इस बात पर निर्भर करती हैं कि किसी खास जगह (क्षेत्र) पर पहली बार डिप्लॉय किया जा रहा है या नहीं. अनुमतियों के बारे में ज़्यादा जानने के लिए, Firebase IAM की खास जानकारी और Firebase ऐप्लिकेशन होस्टिंग की अनुमतियां देखें.
शुरुआती ऑनबोर्डिंग के लिए अनुमतियां (किसी जगह पर पहली बार डिप्लॉयमेंट)
जब किसी प्रोजेक्ट लोकेशन में पहली बार लोकल सोर्स डिप्लॉयमेंट शुरू किया जाता है, तो Hosting को आपके संग्रहों को सेव करने के लिए, GCS बकेट का प्रावधान करना होगा. साथ ही, Hosting सेवा एजेंट को उन तक पहुंचने की अनुमति देनी होगी. ये प्रोजेक्ट-लेवल के एडमिन टास्क हैं. इसलिए, इनके लिए प्रोजेक्ट के मालिक या आईएएम एडमिन की अनुमतियां ज़रूरी हैं. बेसिक एडिटर या दर्शक की भूमिका वाला उपयोगकर्ता, इस शुरुआती सेटअप को पूरा नहीं कर सकता. साथ ही, उसे ब्लॉक कर दिया जाएगा.
सेटअप करने के लिए, ये अनुमतियां ज़रूरी हैं:
- Enable Storage API:
serviceusage.services.enable - सोर्स बकेट बनाना:
storage.buckets.createऔरstorage.buckets.list - सर्विस एजेंट को कॉन्फ़िगर करें:
resourcemanager.projects.setIamPolicyको Hosting पढ़ने का ऐक्सेस (roles/storage.objectViewer) दें, ताकि वह बिल्ड के दौरान अपलोड किए गए कोड को फ़ेच कर सके.
शुरुआती डिप्लॉयमेंट के लिए, GCS बकेट को 30 दिनों के लाइफ़साइकल के साथ बनाया जाता है. इसके बाद, बकेट को मिटा दिया जाता है. हालांकि, इस समयावधि को Cloud Console में मैनेज किया जा सकता है. इसके लिए, Cloud Storage -> बकेट -> लाइफ़साइकल -> नियम पर जाएं. ऑब्जेक्ट के लाइफ़साइकल मैनेज करना लेख पढ़ें.
जगह की जानकारी की सुविधा शुरू होने के बाद, ऐप्लिकेशन को डिप्लॉय करने के लिए अनुमतियां
किसी जगह के लिए सोर्स बकेट और भूमिकाओं को बाइंड करने की प्रोसेस शुरू होने के बाद, सामान्य डेवलपर, एडिटर या App Hosting एडमिन अपडेट डिप्लॉय कर सकते हैं. यह प्रोसेस, सीएलआई की मदद से शुरुआती डिप्लॉयमेंट या कंसोल सेटअप के ज़रिए शुरू की जा सकती है. सामान्य डिप्लॉयमेंट के लिए, प्रोजेक्ट-लेवल के एडमिन के तौर पर काम करने की अनुमतियों की ज़रूरत नहीं होती.
ऐक्टिव डिप्लॉयमेंट की अनुमतियों में ये शामिल हैं:
- बकेट की पुष्टि करें:
storage.buckets.list - सोर्स संग्रह अपलोड करें:
storage.objects.create - ट्रिगर बनाना और रोल आउट करना: स्टैंडर्ड Hosting अनुमतियां (
apphosting.builds.createऔरapphosting.rollouts.create)
Firebase CLI की मदद से सोर्स से डिप्लॉय करना
Firebase CLI v14.4.0 और इसके बाद के वर्शन की मदद से, ऐप्लिकेशन के सोर्स कोड और कॉन्फ़िगरेशन को सीधे अपनी लोकल मशीन से Firebase पर पुश किया जा सकता है. अगर आपको पहले से ही Firebase के अन्य डिप्लॉयमेंट (जैसे कि सुरक्षा के नियम या फ़ंक्शन) मैनेज करने हैं और आपको अपने वेब ऐप्लिकेशन और बैकएंड सेवाओं को एक साथ डिप्लॉय करना है, तो यह तरीका आपके लिए फ़ायदेमंद है.
ज़रूरी शर्तें
- आपके प्रोजेक्ट, ब्लेज़ प्लान पर होने चाहिए.
- आपके पास firebase-tools 14.4.0 या इसके बाद का वर्शन होना चाहिए.
डिप्लॉयमेंट के चरण
- अपने लोकल प्रोजेक्ट डायरेक्ट्री में
firebase init apphostingचलाएं. - जब कहा जाए, तब किसी मौजूदा प्रोजेक्ट का इस्तेमाल करें को चुनें. इसके बाद, अपना टारगेट Firebase प्रोजेक्ट चुनें.
- डप्लॉय करने के लिए, कोई नया या मौजूदा बैकएंड चुनें. इस चरण में, आपकी स्थानीय डायरेक्ट्री के लिए Hosting डिप्लॉयमेंट सेट अप किए जाते हैं. साथ ही, आपको कॉन्फ़िगरेशन की जानकारी देने के लिए कहा जाता है:
- जिस बैकएंड पर डिप्लॉय करना है उसका आईडी
- अगर नया बैकएंड बनाया जा रहा है, तो उसे डिप्लॉय करने के लिए क्षेत्र
- आपके ऐप्लिकेशन कोड की रूट डायरेक्ट्री का पाथ
- आपका पसंदीदा Node.js रनटाइम. वर्शन वाला रनटाइम चुनने पर, अपने-आप अपडेट होने वाली बुनियादी इमेज (एबीआईयू) की सुविधा चालू हो जाती है. इससे आपके एनवायरमेंट में सुरक्षा पैच अपने-आप लागू हो जाते हैं.
- 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 का इस्तेमाल नहीं करना है या आपको कोई दूसरा CI/CD सेटअप इस्तेमाल करना है.
आर्काइव किए गए अपलोड, शुरुआती बैकएंड बनाने के दौरान किए जा सकते हैं. इसके अलावा, इन्हें किसी मौजूदा बैकएंड पर मैन्युअल रोलआउट बनाते समय भी किया जा सकता है. इनमें वे बैकएंड भी शामिल हैं जिन्हें मूल रूप से Firebase CLI का इस्तेमाल करके डिप्लॉय किया गया था.
इस्तेमाल किए जा सकने वाले फ़ॉर्मैट
कंसोल पर अपलोड करने की सुविधा, कंप्रेस किए गए दो संग्रह फ़ॉर्मैट को मान्य करती है और उन्हें स्वीकार करती है:
.zip.tgz
ये फ़ॉर्मैट, फ़ाइल अपलोड करने वाले टूल के ब्यौरे के टेक्स्ट में साफ़ तौर पर दिखाए जाते हैं.
डिप्लॉयमेंट के चरण
विकल्प A: बैकएंड को पहली बार ऑनबोर्ड करते समय
- सोर्स चुनें: बैकएंड क्रिएशन विज़र्ड में, "आपको अपना ऐप्लिकेशन कैसे इंपोर्ट करना है?" चरण के दौरान, ज़िप फ़ाइल अपलोड करें चुनें.
- ऑनबोर्डिंग की तैयारी: "आगे बढ़ें" पर क्लिक करने से, बैकग्राउंड में तैयारी की प्रोसेस शुरू हो जाती है. इससे Storage API चालू हो जाता है, यह पक्का हो जाता है कि सही भूमिकाएं सेट अप की गई हैं, और बकेट को अपसर्ट किया जाता है. यूज़र इंटरफ़ेस पर, डाइनैमिक स्टेटस मैसेज के साथ लोडिंग स्पिनर दिखता है: "API चालू किया जा रहा है...", "अनुमतियां
जांची जा रही हैं..." और "बकेट तैयार किया जा रहा है...".
- गड़बड़ी ठीक करना और सुरक्षा के दिशा-निर्देश: अगर तैयारी का कोई चरण पूरा नहीं होता है (जैसे कि मालिक नहीं होने वाले व्यक्ति को आईएएम की ज़रूरी अनुमतियां न होने की वजह से
403 PERMISSION_DENIEDमिलता है), तो यूज़र इंटरफ़ेस (यूआई) पर एक चेतावनी दिखती है. इसमें आपको प्रोजेक्ट के मालिक से संपर्क करने के लिए कहा जाता है. स्टेप-बाय-स्टेप नेविगेशन पूरी तरह से लॉक हो जाता है. साथ ही, समस्या हल होने तक "अगला" बटन और "पूरा करें और लागू करें" बटन काम नहीं करते.
- गड़बड़ी ठीक करना और सुरक्षा के दिशा-निर्देश: अगर तैयारी का कोई चरण पूरा नहीं होता है (जैसे कि मालिक नहीं होने वाले व्यक्ति को आईएएम की ज़रूरी अनुमतियां न होने की वजह से
- फ़ाइलें अपलोड करें: तैयारी पूरी होने के बाद, अपनी संग्रह फ़ाइल को फ़ाइल अपलोड करने वाले कॉम्पोनेंट में चुनें या खींचें.
सेटिंग कॉन्फ़िगर करें: अपनी ऐप्लिकेशन की रूट डायरेक्ट्री तय करें. यह डिफ़ॉल्ट रूप से
/होती है.पूरा करें और डिप्लॉय करें पर क्लिक करें: ज़िप फ़ाइल अपलोड करने के लिए, "पूरा करें" बटन बंद कर दिया जाता है. ऐसा इसलिए, क्योंकि किसी आर्काइव को सिर्फ़ एक बार अपलोड किया जा सकता है. साथ ही, बैकएंड के ठीक से काम करने के लिए, इसे तुरंत डिप्लॉय करना ज़रूरी है.
विकल्प B: मैन्युअल रोलआउट बनाना
- डायलॉग बॉक्स खोलें: Hosting डैशबोर्ड में, रोलआउट बनाएं पर क्लिक करें.
- सोर्स चुनें: डायलॉग के स्टेपर में, ज़िप फ़ाइल अपलोड करें को चुनें. अगर बैकएंड में GitHub से पहले से कोई कनेक्शन नहीं है, तो "GitHub" विकल्प बंद हो जाता है.
- तैयारी और अपलोड करना: चुनने पर, बैकग्राउंड में तैयारी करने की वही प्रोसेस ट्रिगर होती है ("एपीआई चालू किया जा रहा है...", "अनुमतियां जांची जा रही हैं..." और "बकेट तैयार किया जा रहा है..."). अपलोड हो जाने के बाद, अपलोडर का इस्तेमाल करके अपनी संग्रह फ़ाइल को खींचें या चुनें. इसके बाद, ऐप्लिकेशन की रूट डायरेक्ट्री तय करें. इसके बाद, बिल्ड और रोलआउट को ट्रिगर करने के लिए, डिप्लॉय करें पर क्लिक करें.
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 में मौजूद पब्लिश करें बटन को बंद कर दिया जाएगा. अपने यूआरएल में बदलाव किए बिना अपडेट पब्लिश करना जारी रखने के लिए, अपने प्रोजेक्ट को माइग्रेट करें. माइग्रेट करने का तरीका जानें.