ज़्यादातर मामलों में, हमारा सुझाव है कि रोलआउट को अपने-आप ट्रिगर होने दें या मैन्युअल तरीके से ट्रिगर करें Firebase कंसोल से. हालांकि, हो सकता है कि आपको डिप्लॉयमेंट के लिए, ज़्यादा मनमुताबिक बनाया गया फ़्लो चाहिए. App Hosting में, कस्टम डिप्लॉयमेंट के लिए कई विकल्प मौजूद हैं.
सोर्स से डिप्लॉय करना
सोर्स से डिप्लॉय करने पर, आपके पास अपने ऐप्लिकेशन का सोर्स कोड और कॉन्फ़िगरेशन सीधे App Hosting पर पुश करने का विकल्प होता है. इसके लिए, GitHub से लगातार कनेक्ट रहने की ज़रूरत नहीं होती.
सोर्स से डिप्लॉय करने पर, App Hosting आपके सोर्स कोड को
Google Cloud Storage बकेट पर अपलोड करता है. साथ ही, Cloud Build में आपके फ़्रेमवर्क का बिल्ड कमांड चलाता है. इसके बाद, कंपाइल किए गए आर्टफ़ैक्ट को Cloud Run और
Cloud CDN पर डिप्लॉय करता है. GitHub से डिप्लॉयमेंट के लिए इस्तेमाल की जाने वाली बिल्ड प्रोसेस, लोकल
सोर्स से डिप्लॉयमेंट के लिए भी इस्तेमाल की जाती है. अगर आपके प्रोजेक्ट में .gitignore फ़ाइल मौजूद है, तो उसमें शामिल फ़ाइलें और फ़ोल्डर, आपके डिप्लॉयमेंट से बाहर कर दिए जाते हैं.
लोकल सोर्स से डिप्लॉय करने के लिए, Firebase सीएलआई या Firebase कंसोल का इस्तेमाल किया जा सकता है.
आईएम की ज़रूरी अनुमतियां और बुनियादी ढांचे का सेटअप
Firebase CLI और Firebase कंसोल, दोनों ही आपके सोर्स आर्काइव को सेव करने और बनाने के लिए, एक ही बैकएंड इन्फ़्रास्ट्रक्चर का इस्तेमाल करते हैं. इसलिए, दोनों ही डिप्लॉयमेंट के तरीकों के लिए, आईएएम की एक जैसी अनुमतियां ज़रूरी होती हैं.
ज़रूरी शर्तें इस बात पर निर्भर करती हैं कि आप किसी खास जगह (इलाके) पर पहली बार डिप्लॉय कर रहे हैं या नहीं. अनुमतियों के बारे में ज़्यादा जानने के लिए, Firebase IAM की खास जानकारी और खास Firebase App Hosting अनुमतियां देखें.
शुरुआती ऑनबोर्डिंग के लिए अनुमतियां (किसी जगह पर पहली बार डिप्लॉयमेंट करना)
जब किसी प्रोजेक्ट की जगह पर, पहली बार लोकल सोर्स डिप्लॉयमेंट शुरू किया जाता है, तो Hosting को GCS बकेट उपलब्ध करानी होती है. इससे आपके आर्काइव सेव किए जा सकते हैं. साथ ही, Hosting Service Agent को उनका ऐक्सेस देना होता है. ये प्रोजेक्ट-लेवल के एडमिन टास्क हैं. इसलिए, इनके लिए प्रोजेक्ट के मालिक या आईएएम एडमिन की अनुमतियां ज़रूरी होती हैं. एडिटर या दर्शक की सामान्य भूमिका वाला उपयोगकर्ता, यह शुरुआती सेटअप नहीं कर सकता. साथ ही, उसे ब्लॉक कर दिया जाएगा.
सेटअप के लिए ज़रूरी अनुमतियों में ये शामिल हैं:
- Storage API चालू करना:
serviceusage.services.enable - सोर्स बकेट बनाना:
storage.buckets.createऔरstorage.buckets.list - सर्विस एजेंट को कॉन्फ़िगर करना:
resourcemanager.projects.setIamPolicyको पढ़ने का ऐक्सेस (roles/storage.objectViewer) देने के लिए, Hosting. इससे, बिल्ड के दौरान अपलोड किए गए कोड को फ़ेच किया जा सकता है.
शुरुआती डिप्लॉयमेंट के लिए, 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 के वर्शन 14.4.0 और इसके बाद के वर्शन की मदद से, अपने ऐप्लिकेशन का सोर्स कोड और कॉन्फ़िगरेशन सीधे अपने लोकल मशीन से Firebase पर पुश किया जा सकता है. अगर आपने पहले से ही Firebase के अन्य डिप्लॉयमेंट (जैसे, सुरक्षा के नियम या फ़ंक्शन) मैनेज किए हैं और आपको अपने वेब ऐप्लिकेशन और बैकएंड सेवाओं को सीएलआई के एक ही कमांड से डिप्लॉय करना है, तो यह तरीका आपके लिए काम का है.
ज़रूरी शर्तें
- आपके प्रोजेक्ट Blaze प्लान पर होने चाहिए.
- आपके पास 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 कंसोल का इस्तेमाल करके डिप्लॉय करना (ज़िप फ़ाइल अपलोड करना)
The Firebase कंसोल एक ग्राफ़िकल इंटरफ़ेस उपलब्ध कराता है. इसकी मदद से, कंप्रेस किया गया सोर्स आर्काइव सीधे अपलोड करके, ऐप्लिकेशन डिप्लॉय किए जा सकते हैं. यह GitHub कनेक्शन फ़्लो के विकल्प के तौर पर काम करता है. इसका इस्तेमाल तब किया जा सकता है, जब आपको GitHub का इस्तेमाल नहीं करना हो या सीआई/सीडी का कोई दूसरा सेटअप इस्तेमाल करना हो.
आर्काइव अपलोड, बैकएंड बनाते समय या किसी मौजूदा बैकएंड पर मैन्युअल रोलआउट बनाते समय किए जा सकते हैं. इनमें वे बैकएंड भी शामिल हैं जिन्हें Firebase CLI का इस्तेमाल करके डिप्लॉय किया गया था.
इस पर काम करने वाले फ़ॉर्मैट
कंसोल अपलोडर, कंप्रेस किए गए आर्काइव के दो फ़ॉर्मैट की पुष्टि करता है और उन्हें स्वीकार करता है:
.zip.tgz
ये फ़ॉर्मैट, फ़ाइल अपलोडर के ब्यौरे वाले टेक्स्ट में साफ़ तौर पर दिखते हैं.
डिप्लॉयमेंट के चरण
पहला विकल्प: शुरुआती बैकएंड ऑनबोर्डिंग के दौरान
- सोर्स चुनना: बैकएंड बनाने के विज़र्ड में, "आपको अपना ऐप्लिकेशन कैसे इंपोर्ट करना है?" चरण के दौरान, ज़िप फ़ाइल अपलोड करें को चुनें.
- ऑनबोर्डिंग की तैयारी: "अगला" पर क्लिक करने से, बैकग्राउंड में तैयारी का फ़्लो ट्रिगर होता है.
इससे, Storage API क्रम से चालू होता है, यह पक्का किया जाता है कि सही भूमिकाएं सेट अप की गई हों, और बकेट को अपसर्ट किया जाता है. यूज़र इंटरफ़ेस (यूआई) पर, लोड होने का
स्पिनर दिखता है. साथ ही, स्टेटस के मैसेज भी दिखते हैं: "एपीआई चालू किया जा रहा है...", "अनुमतियां
देखी जा रही हैं...", और "बकेट तैयार की जा रही है...".
- गड़बड़ी को ठीक करना और सुरक्षा के उपाय: अगर तैयारी का कोई चरण पूरा नहीं होता है (जैसे, मालिक के अलावा किसी अन्य व्यक्ति को आईएएम की ज़रूरी अनुमतियां न होने की वजह से,
403 PERMISSION_DENIEDगड़बड़ी मिलती है), तो यूआई पर एक चेतावनी दिखती है. इसमें आपको प्रोजेक्ट के मालिक से संपर्क करने के लिए कहा जाता है. स्टेप-बाय-स्टेप नेविगेशन पूरी तरह से लॉक रहता है. साथ ही, "अगला" बटन और "पूरा करें और डिप्लॉय करें" बटन तब तक बंद रहते हैं, जब तक समस्या ठीक नहीं हो जाती.
- गड़बड़ी को ठीक करना और सुरक्षा के उपाय: अगर तैयारी का कोई चरण पूरा नहीं होता है (जैसे, मालिक के अलावा किसी अन्य व्यक्ति को आईएएम की ज़रूरी अनुमतियां न होने की वजह से,
- फ़ाइलें अपलोड करना: तैयारी पूरी होने के बाद, फ़ाइल अपलोडर कॉम्पोनेंट में अपनी आर्काइव फ़ाइल चुनें या उसे खींचकर छोड़ें.
सेटिंग कॉन्फ़िगर करना: अपनी ऐप्लिकेशन की रूट डायरेक्ट्री तय करें. डिफ़ॉल्ट रूप से, यह
/होती है.पूरा करें और डिप्लॉय करें पर क्लिक करें: ज़िप फ़ाइल अपलोड करने के लिए, "पूरा करें" बटन बंद रहता है. ऐसा इसलिए, क्योंकि आर्काइव अपलोड करना एक बार की जाने वाली कार्रवाई है. साथ ही, यह ज़रूरी है कि इसके तुरंत बाद डिप्लॉयमेंट किया जाए, ताकि यह पक्का किया जा सके कि बैकएंड काम कर रहा है.
दूसरा विकल्प: मैन्युअल रोलआउट बनाना
- डायलॉग खोलना: Hosting डैशबोर्ड में, रोलआउट बनाएं पर क्लिक करें.
- सोर्स चुनना: डायलॉग के स्टेप-बाय-स्टेप प्रोसेस में, ज़िप फ़ाइल अपलोड करें को चुनें. अगर बैकएंड का GitHub से कोई कनेक्शन नहीं है, तो "GitHub" विकल्प बंद रहता है.
- तैयारी और अपलोड: इस विकल्प को चुनने पर, बैकग्राउंड में तैयारी का वही फ़्लो ट्रिगर होता है ("एपीआई चालू किया जा रहा है...", "अनुमतियां देखी जा रही हैं...", और "बकेट तैयार की जा रही है..."). तैयारी पूरी होने के बाद, अपलोडर का इस्तेमाल करके अपनी आर्काइव फ़ाइल को खींचकर छोड़ें या चुनें . इसके बाद, ऐप्लिकेशन की रूट डायरेक्ट्री तय करें. बिल्ड और रोलआउट को ट्रिगर करने के लिए, डिप्लॉय करें पर क्लिक करें.
Terraform का इस्तेमाल करके डिप्लॉय करना
अगर आपको बिल्ड प्रोसेस और डिप्लॉय किए गए एनवायरमेंट पर ज़्यादा कंट्रोल चाहिए, तो Terraform का इस्तेमाल करके डिप्लॉय किया जा सकता है. Terraform की मदद से, आपके App Hosting संसाधनों को डिक्लेरेटिव कॉन्फ़िगरेशन फ़ाइलों का इस्तेमाल करके तय और मैनेज किया जा सकता है. साथ ही, आपके पास पहले से बनी कंटेनर इमेज को सीधे App Hosting पर डिप्लॉय करने का विकल्प होता है. इसके लिए, App Hosting को आपके सोर्स कोड से बिल्ड करने की ज़रूरत नहीं होती.
अगर आपको Terraform के बारे में ज़्यादा जानकारी नहीं है, तो Terraform और Firebase का इस्तेमाल शुरू करना लेख पढ़ें. अगर आपको Terraform के बारे में पहले से जानकारी है, तो सैंपल कॉन्फ़िगरेशन फ़ाइलों और अन्य App Hosting संसाधनों का इस्तेमाल शुरू किया जा सकता है.
सीआई/सीडी के लिए GitHub कनेक्शन सेट अप करना
Firebase कंसोल में, बैकएंड की सेटिंग के डिप्लॉयमेंट टैब में जाकर, GitHub रिपॉज़िटरी को किसी भी समय कनेक्ट किया जा सकता हैFirebase. इससे, लोकल एनवायरमेंट से ऐप्लिकेशन का प्रोटोटाइप डिप्लॉय किया जा सकता है. इसके बाद, तैयार होने पर, सीआई/सीडी की ऑटोमेटेड पाइपलाइन पर ट्रांज़िशन किया जा सकता है.
एआई टूल का इस्तेमाल करके डिप्लॉय करना
हम 22 मार्च, 2027 को Firebase Studio बंद कर रहे हैं. इससे आपके App Hosting बैकएंड पर कोई असर नहीं पड़ेगा. हालांकि, पब्लिश करें बटन को Firebase Studio बंद कर दिया जाएगा. यूआरएल में बदलाव किए बिना, अपडेट पब्लिश करने के लिए, अपने प्रोजेक्ट को माइग्रेट करें. माइग्रेट करने का तरीका जानें.