Firebase App Hosting, Cloud Build का इस्तेमाल करके आपके ऐप्लिकेशन के सोर्स कोड को कंटेनर वाले फ़ॉर्मैट में बदलता है. इससे Cloud Run पर ऐप्लिकेशन को डिप्लॉय करना आसान हो जाता है.
बिल्ड प्रोसेस, इन मुख्य चरणों में पूरी होती है:
ubuntu: Workspace initialization.
preparer: यह आपके ऐप्लिकेशन के सोर्स कोड और कॉन्फ़िगरेशन को इकट्ठा करता है.
pre-buildpack: यह बिल्डपैक एनवायरमेंट तैयार करता है.
build: यह कमांड, डिपेंडेंसी इंस्टॉल करती है और आपका ऐप्लिकेशन बनाती है.
पब्लिशर: प्रोडक्शन Cloud Run कंटेनर को फ़ाइनल करता है.
ये पांच चरण, Google Cloud Console में Cloud Build में दिखाए गए बिल्ड चरणों से सीधे तौर पर जुड़े हैं:

Workspace को शुरू करना
यह चरण, Ubuntu के बिल्ड चरण से मेल खाता है. यह बिल्ड वर्कस्पेस को शुरू करता है. साथ ही, यह पक्का करता है कि बिल्ड के बाद के चरणों में इस्तेमाल की जाने वाली डायरेक्ट्री के लिए, फ़ाइल की सही अनुमतियां सेट की गई हों.
तैयार करने वाला
यह स्टेज, प्री-बिल्ड लॉजिक को मैनेज करने के लिए ज़िम्मेदार होती है. यह उपयोगकर्ता के तय किए गए एनवायरमेंट वैरिएबल को पढ़ता है, उन्हें सुरक्षित करता है, और लिखता है. यह apphosting.yaml फ़ाइल में बताए गए किसी भी सीक्रेट को अनपिन और डीरेफ़रेंस भी करता है.
प्री-बिल्डपैक
इस चरण में, Cloud Native Buildpacks के लाइफ़साइकल के लिए एनवायरमेंट तैयार किया जाता है. इसमें एक शिम चलाने की प्रोसेस शामिल होती है. यह शिम, पिछले चरण में तैयार किए गए कॉन्फ़िगरेशन और एनवायरमेंट वैरिएबल को CNB टूल के लिए ज़रूरी फ़ॉर्मैट में बदलता है.
बिल्ड
यह बिल्ड प्रोसेस का मुख्य हिस्सा है. इसकी मदद से, चलाने लायक कंटेनर इमेज और bundle.yaml फ़ाइल जनरेट की जाती है. इस फ़ाइल में, आपके बिल्ड कॉन्फ़िगरेशन की जानकारी होती है.
यह ऐप्लिकेशन को बेहतर तरीके से पैकेज करने के लिए, Cloud Native Buildpacks और लाइफ़साइकल क्रिएटर बाइनरी का इस्तेमाल करता है. bundle.yaml फ़ाइल के बारे में ज़्यादा जानकारी, github पर देखी जा सकती है.
बिल्डपैक, आपके ऐप्लिकेशन के सोर्स कोड को प्रोडक्शन के लिए तैयार कंटेनर इमेज में बदलने का काम करते हैं. Firebase App Hosting, बिल्ड प्रोसेस को पूरा करने के लिए कई बिल्डपैक को एक साथ जोड़ता है:
- रनटाइम बिल्डपैक: यह पक्का करता है कि बुनियादी Node.js ऐप्लिकेशन को चलाने के लिए सभी ज़रूरी कॉम्पोनेंट शामिल किए गए हों और डिपेंडेंसी इंस्टॉल की गई हों.
- Monorepo Buildpack: यह बाद के बिल्डपैक को कॉन्फ़िगर करता है, ताकि अलग-अलग monorepo के साथ काम किया जा सके.
फ़्रेमवर्क बिल्डपैक: यह सही फ़्रेमवर्क अडैप्टर (जैसे, Angular या Next.js) इंस्टॉल करता है और इसके बाद के बिल्डपैक तैयार करता है.
फ़्रेमवर्क अडैप्टर, प्रोडक्शन के लिए तैयार किए गए बिल्ड कमांड को चलाने और फ़्रेमवर्क के हिसाब से कॉन्फ़िगरेशन की किसी भी वैल्यू को App Hosting के लिए पढ़े जा सकने वाले स्टैंडर्ड फ़ॉर्मैट में मैप करने के लिए ज़िम्मेदार होते हैं.
Package Manager Buildpack: यह डिपेंडेंसी इंस्टॉल करता है और npm, yarn या pnpm का इस्तेमाल करके ऐप्लिकेशन बनाता है.
आउटपुट बंडल बिल्डपैक: यह रन कमांड तय करता है और एक्ज़ीक्यूशन के लिए आउटपुट बंडल तैयार करता है.
प्रकाशक
इस आखिरी चरण में, ऐप्लिकेशन के सोर्स कोड से निकाली गई सभी जानकारी को पैकेज किया जाता है. साथ ही, बिल्ड कंटेनर इमेज को भी पैकेज किया जाता है. इसके बाद, इसे App Hosting बैकएंड को भेज दिया जाता है. इसके बाद, App Hosting बैकएंड इस जानकारी का इस्तेमाल करके, सही कॉन्फ़िगरेशन के साथ Cloud Run सेट अप करता है.
ज़्यादा जानें
App Hosting को बनाने की पूरी प्रोसेस ओपन सोर्स है.
- buildpack का कोड, Google Cloud buildpacks repo में मौजूद है
- फ़्रेमवर्क अडैप्टर के लिए कोड, firebase-framework-tools repo में मौजूद है
- Cloud Native buildpacks और Cloud Build के बारे में ज़्यादा जानें