हमारा सुझाव है कि आप ज़्यादातर समय, Firebase कंसोल से अपने-आप होने वाले रोलआउट या मैन्युअल तरीके से ट्रिगर होने वाले रोलआउट का इस्तेमाल करें. हालांकि, आपको अपनी ज़रूरत के हिसाब से ज़्यादा कस्टमाइज़ किए गए डिप्लॉयमेंट फ़्लो की ज़रूरत पड़ सकती है. App Hosting में, कस्टम डिप्लॉयमेंट के लिए कई विकल्प मौजूद हैं.
सोर्स से डिप्लॉय करना
सोर्स से डिप्लॉय करने पर, आपको अपने ऐप्लिकेशन के सोर्स कोड और कॉन्फ़िगरेशन को सीधे App Hosting पर पुश करने की सुविधा मिलती है. इसके लिए, GitHub से लगातार कनेक्शन बनाए रखने की ज़रूरत नहीं होती.
सोर्स से डिप्लॉय करने पर, App Hosting आपके सोर्स कोड को Google Cloud Storage बकेट में अपलोड करता है. साथ ही, Cloud Build में आपके फ़्रेमवर्क का बिल्ड कमांड चलाता है और कंपाइल किए गए आर्टफ़ैक्ट को Cloud Run और Cloud CDN पर डिप्लॉय करता है. लोकल सोर्स डिप्लॉयमेंट के लिए, उसी बिल्ड प्रोसेस का इस्तेमाल किया जाता है जिसका इस्तेमाल GitHub डिप्लॉयमेंट के लिए किया जाता है. अगर आपके प्रोजेक्ट में कोई .gitignore फ़ाइल मौजूद है, तो उसमें मौजूद फ़ाइलों और फ़ोल्डर को आपके डिप्लॉयमेंट से बाहर रखा जाता है.
Firebase सीएलआई या Firebase कंसोल का इस्तेमाल करके, किसी लोकल सोर्स से डिप्लॉय किया जा सकता है.
ज़रूरी आईएएम अनुमतियां और इन्फ़्रास्ट्रक्चर सेटअप
Firebase सीएलआई और Firebase कंसोल, दोनों आपके सोर्स संग्रहों को सेव करने और बनाने के लिए, एक ही बैकएंड इन्फ़्रास्ट्रक्चर का इस्तेमाल करते हैं. इसलिए, डिप्लॉयमेंट के दोनों तरीकों पर आईएएम की अनुमति से जुड़ी एक जैसी ज़रूरी शर्तें लागू होती हैं.
ज़रूरी शर्तें इस बात पर निर्भर करती हैं कि आपने किसी खास जगह (इलाके) पर पहली बार डिप्लॉय किया है या नहीं. अनुमतियों के बारे में ज़्यादा जानने के लिए, Firebase IAM की खास जानकारी और Firebase App Hosting की अनुमतियां देखें.
शुरुआती तौर पर शामिल होने के लिए अनुमतियां (किसी जगह पर पहली बार डिप्लॉयमेंट के लिए)
जब किसी प्रोजेक्ट की जगह पर पहली बार लोकल सोर्स डिप्लॉयमेंट शुरू किया जाता है, तो App Hosting को आपके संग्रह सेव करने के लिए, GCS बकेट का प्रावधान करना होगा. साथ ही, App Hosting सर्विस एजेंट को उन्हें ऐक्सेस करने की अनुमति देनी होगी. ये प्रोजेक्ट-लेवल के एडमिन टास्क हैं. इसलिए, इन्हें पूरा करने के लिए आपके पास प्रोजेक्ट के मालिक या आईएएम एडमिन के तौर पर मिली अनुमतियां होनी चाहिए. एडिटर या व्यूअर की भूमिका वाला उपयोगकर्ता, यह शुरुआती सेटअप नहीं कर सकता. ऐसा करने पर, उसे ब्लॉक कर दिया जाएगा.
सेटअप करने के लिए, ये अनुमतियां ज़रूरी हैं:
- 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 सीएलआई की मदद से, सोर्स से डिप्लॉय करना
Firebase सीएलआई v14.4.0 और इसके बाद के वर्शन की मदद से, अपने ऐप्लिकेशन के सोर्स कोड और कॉन्फ़िगरेशन को सीधे अपनी लोकल मशीन से Firebase पर पुश किया जा सकता है. यह तरीका तब काम आता है, जब आपके पास पहले से ही Firebase की अन्य डिप्लॉयमेंट (जैसे, सुरक्षा के नियम या फ़ंक्शन) मैनेज करने की सुविधा हो. साथ ही, आपको अपने वेब ऐप्लिकेशन और बैकएंड सेवाओं को एक ही सीएलआई कमांड के साथ डिप्लॉय करना हो.
ज़रूरी शर्तें
- आपके प्रोजेक्ट Blaze प्लान पर होने चाहिए.
- आपके पास firebase-tools का 14.4.0 या इसके बाद का वर्शन होना चाहिए.
डिप्लॉयमेंट के चरण
- अपनी लोकल प्रोजेक्ट डायरेक्ट्री में
firebase init apphostingचलाएं. - जब आपसे पूछा जाए, तब किसी मौजूदा प्रोजेक्ट का इस्तेमाल करें को चुनें. इसके बाद, अपना टारगेट Firebase प्रोजेक्ट चुनें.
- डिप्लॉय करने के लिए, कोई नया या मौजूदा बैकएंड चुनें. इस चरण से, आपकी लोकल डायरेक्ट्री के लिए App 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 का इस्तेमाल नहीं करना है या कोई दूसरा सीआई/सीडी सेटअप इस्तेमाल करना है.
शुरुआती बैकएंड बनाने के दौरान या किसी मौजूदा बैकएंड पर मैन्युअल रोलआउट बनाने के दौरान, संग्रह अपलोड किए जा सकते हैं. इनमें वे बैकएंड भी शामिल हैं जिन्हें मूल रूप से Firebase सीएलआई का इस्तेमाल करके डिप्लॉय किया गया था.
इस्तेमाल किए जा सकने वाले फ़ॉर्मैट
Console का अपलोडर, कंप्रेस किए गए संग्रह के दो फ़ॉर्मैट की पुष्टि करता है और उन्हें स्वीकार करता है:
.zip.tgz
ये फ़ॉर्मैट, फ़ाइल अपलोडर के ब्यौरे वाले टेक्स्ट में साफ़ तौर पर दिखते हैं.
डिप्लॉयमेंट के चरण
पहला विकल्प: बैकएंड पर शुरुआती ऑनबोर्डिंग के दौरान
- सोर्स चुनें: बैकएंड क्रिएशन विज़र्ड में, "आपको अपना ऐप्लिकेशन कैसे इंपोर्ट करना है?" चरण के दौरान, ज़िप फ़ाइल अपलोड करें को चुनें.
- Onboarding Preparation: Clicking "Next" triggers the background
preparation flow, which sequentially enables the Storage API, ensures the
correct roles are set up, and upserts the bucket. यूज़र इंटरफ़ेस (यूआई) में, डाइनैमिक स्टेटस मैसेज के साथ लोडिंग स्पिनर दिखता है: "एपीआई चालू किया जा रहा है...", "अनुमतियों की जांच की जा रही है...", और "बकेट तैयार की जा रही है...".
- गड़बड़ी ठीक करना और सुरक्षा के उपाय: अगर तैयारी का कोई चरण पूरा नहीं हो पाता है (जैसे, आईएएम की ज़रूरी अनुमतियां न होने की वजह से, किसी ऐसे व्यक्ति को
403 PERMISSION_DENIEDमिलना जो मालिक नहीं है), तो यूज़र इंटरफ़ेस (यूआई) पर एक चेतावनी दिखती है. इसमें आपको प्रोजेक्ट के मालिक से संपर्क करने का निर्देश दिया जाता है. स्टेपर नेविगेशन पूरी तरह से लॉक हो जाता है. साथ ही, समस्या हल होने तक "आगे बढ़ें" बटन और "पूरा करें और डिप्लॉय करें" बटन बंद रहता है.
- गड़बड़ी ठीक करना और सुरक्षा के उपाय: अगर तैयारी का कोई चरण पूरा नहीं हो पाता है (जैसे, आईएएम की ज़रूरी अनुमतियां न होने की वजह से, किसी ऐसे व्यक्ति को
- फ़ाइलें अपलोड करना: फ़ाइल तैयार होने के बाद, उसे चुनें या फ़ाइल अपलोडर कॉम्पोनेंट में खींचें और छोड़ें.
सेटिंग कॉन्फ़िगर करें: अपने ऐप्लिकेशन की रूट डायरेक्ट्री की जानकारी दें. डिफ़ॉल्ट रूप से, यह
/पर सेट होती है.Finish and Deploy पर क्लिक करें: ज़िप फ़ाइलें अपलोड करने के लिए, अलग से मौजूद "Finish" बटन बंद कर दिया जाता है. ऐसा इसलिए, क्योंकि संग्रह को अपलोड करना एक बार की जाने वाली कार्रवाई है. साथ ही, बैकएंड को काम करने लायक बनाने के लिए, इसे तुरंत डिप्लॉय करना ज़रूरी है.
दूसरा विकल्प: मैन्युअल तरीके से रोलआउट करना
- डायलॉग बॉक्स खोलें: App Hosting डैशबोर्ड में, रोलआउट बनाएं पर क्लिक करें.
- सोर्स चुनें: डायलॉग बॉक्स के स्टेपर में, ज़िप फ़ाइल अपलोड करें को चुनें. अगर बैकएंड में पहले से कोई GitHub कनेक्शन मौजूद नहीं है, तो "GitHub" विकल्प बंद हो जाता है.
- तैयारी और अपलोड करना: इस विकल्प को चुनने पर, बैकग्राउंड में तैयारी करने की वही प्रोसेस ट्रिगर होती है ("एपीआई चालू किया जा रहा है...", "अनुमतियों की जांच की जा रही है...", और "बकेट तैयार की जा रही है..."). इसके बाद, अपलोडर का इस्तेमाल करके अपनी संग्रह फ़ाइल को खींचें और छोड़ें या उसे चुनें. साथ ही, ऐप्लिकेशन की रूट डायरेक्ट्री की जानकारी दें. इसके बाद, बिल्ड और रोल आउट को ट्रिगर करने के लिए, डिप्लॉय करें पर क्लिक करें.
Terraform का इस्तेमाल करके डिप्लॉय करना
अगर आपको बिल्ड प्रोसेस और डिप्लॉय किए गए एनवायरमेंट पर ज़्यादा कंट्रोल चाहिए, तो Terraform का इस्तेमाल करके डिप्लॉय किया जा सकता है. Terraform की मदद से, डिक्लेरेटिव कॉन्फ़िगरेशन फ़ाइलों का इस्तेमाल करके, App Hosting के संसाधनों को तय और मैनेज किया जा सकता है. साथ ही, पहले से बनाई गई कंटेनर इमेज को सीधे App Hosting पर डिप्लॉय किया जा सकता है. इसके लिए, आपको सोर्स कोड से इमेज बनाने के लिए, App Hosting पर निर्भर रहने की ज़रूरत नहीं है.
अगर Terraform आपके लिए नया है, तो Terraform और Firebase का इस्तेमाल शुरू करना लेख पढ़ें. अगर आपको Terraform के बारे में पहले से जानकारी है, तो सैंपल कॉन्फ़िगरेशन फ़ाइलों और अन्य App Hosting संसाधनों का इस्तेमाल करके शुरुआत की जा सकती है.
सीआई/सीडी के लिए GitHub कनेक्शन सेट अप करना
आपके पास Firebase कंसोल में बैकएंड की सेटिंग के डिप्लॉयमेंट टैब में जाकर, किसी भी समय GitHub रिपॉज़िटरी को कनेक्ट करने का विकल्प होता है. इससे आपको लोकल एनवायरमेंट से ऐप्लिकेशन का प्रोटोटाइप डिप्लॉय करने में मदद मिलती है. इसके बाद, तैयार होने पर ऑटोमेटेड सीआई/सीडी पाइपलाइन पर ट्रांज़िशन किया जा सकता है.
एआई टूल का इस्तेमाल करके डिप्लॉय करना
हम 22 मार्च, 2027 को Firebase Studio को बंद कर रहे हैं. हालांकि, आपके App Hosting बैकएंड पर इसका कोई असर नहीं पड़ेगा, लेकिन Firebase Studio में मौजूद पब्लिश करें बटन को हटा दिया जाएगा. यूआरएल बदले बिना अपडेट पब्लिश करना जारी रखने के लिए, अपना प्रोजेक्ट माइग्रेट करें. माइग्रेट करने का तरीका जानें.