App Hosting की बिल्ड प्रोसेस

Firebase App Hosting, Cloud Build का इस्तेमाल करके आपके ऐप्लिकेशन के सोर्स कोड को कंटेनर वाले फ़ॉर्मैट में बदलता है. इससे, Cloud Run पर ऐप्लिकेशन को आसानी से डिप्लॉय किया जा सकता है.

बिल्ड प्रोसेस इन मुख्य चरणों में काम करती है:

  1. ubuntu: Workspace initialization.

  2. preparer: यह आपके ऐप्लिकेशन के सोर्स कोड और कॉन्फ़िगरेशन को इकट्ठा करता है.

  3. pre-buildpack: यह buildpack एनवायरमेंट तैयार करता है.

  4. build: यह डिपेंडेंसी इंस्टॉल करता है और आपका ऐप्लिकेशन बनाता है.

  5. पब्लिशर: प्रोडक्शन Cloud Run कंटेनर को फ़ाइनल करता है.

ये पांच चरण, Google Cloud कंसोल में Cloud Build में दिखाए गए बिल्ड चरणों से सीधे तौर पर जुड़े होते हैं:

Cloud Build के चरणों को Google Cloud Console में दिखाने वाली स्क्रीन कैप्चर की गई इमेज

Workspace को शुरू करना

यह चरण, Ubuntu के बिल्ड चरण से मेल खाता है. यह बिल्ड वर्कस्पेस को शुरू करता है. साथ ही, यह पक्का करता है कि बिल्ड के बाद के चरणों में इस्तेमाल की गई डायरेक्ट्री के लिए, फ़ाइल की सही अनुमतियां सेट की गई हों.

तैयार करने वाला

इस स्टेज का काम, पहले से बनाए गए लॉजिक को मैनेज करना है. यह उपयोगकर्ता के तय किए गए एनवायरमेंट वैरिएबल को पढ़ता है, उन्हें सुरक्षित करता है, और लिखता है. यह apphosting.yaml फ़ाइल में बताए गए किसी भी सीक्रेट को अनपिन और डीरेफ़रेंस भी करता है.

प्री-बिल्डपैक

इस चरण में, Cloud Native Buildpacks के लाइफ़साइकल के लिए एनवायरमेंट तैयार किया जाता है. इसमें एक शिम चलाना शामिल है. यह शिम, पिछले चरण में तैयार किए गए कॉन्फ़िगरेशन और एनवायरमेंट वैरिएबल को CNB टूल के लिए ज़रूरी फ़ॉर्मैट में बदलता है.

बनाएं

यह बिल्ड प्रोसेस का मुख्य हिस्सा है. इसकी मदद से, चलाने लायक कंटेनर इमेज और bundle.yaml फ़ाइल जनरेट की जाती है. इस फ़ाइल में, बिल्ड कॉन्फ़िगरेशन की जानकारी होती है. यह ऐप्लिकेशन को बेहतर तरीके से पैकेज करने के लिए, Cloud Native Buildpacks और लाइफ़साइकल क्रिएटर बाइनरी का इस्तेमाल करता है. bundle.yaml फ़ाइल के बारे में ज़्यादा जानकारी, GitHub पर देखी जा सकती है.

बिल्डपैक, आपके ऐप्लिकेशन के सोर्स कोड को प्रोडक्शन के लिए तैयार कंटेनर इमेज में बदलने का काम करते हैं. Firebase App Hosting, बिल्ड प्रोसेस को पूरा करने के लिए कई बिल्डपैक को एक साथ जोड़ता है:

  1. रनटाइम बिल्डपैक: यह पक्का करता है कि Node.js के किसी बुनियादी ऐप्लिकेशन को चलाने के लिए, सभी ज़रूरी कॉम्पोनेंट शामिल किए गए हों और डिपेंडेंसी इंस्टॉल की गई हों.
  2. Monorepo Buildpack: यह बाद के buildpack को कॉन्फ़िगर करता है, ताकि अलग-अलग monorepo के साथ काम किया जा सके.
  3. फ़्रेमवर्क बिल्डपैक: यह सही फ़्रेमवर्क अडैप्टर (जैसे कि Angular या Next.js) इंस्टॉल करता है और इसके बाद के बिल्डपैक तैयार करता है.

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

  4. Package Manager Buildpack: यह डिपेंडेंसी इंस्टॉल करता है और npm, yarn या pnpm का इस्तेमाल करके ऐप्लिकेशन बनाता है.

  5. आउटपुट बंडल बिल्डपैक: यह रन कमांड तय करता है और एक्ज़ीक्यूशन के लिए आउटपुट बंडल तैयार करता है.

प्रकाशक

इस आखिरी चरण में, ऐप्लिकेशन के सोर्स कोड से निकाली गई सभी जानकारी को पैकेज किया जाता है. साथ ही, बिल्ड कंटेनर इमेज को भी पैकेज किया जाता है. इसके बाद, इसे App Hosting बैकएंड को भेजा जाता है. इसके बाद, App Hosting बैकएंड इस जानकारी का इस्तेमाल करके, सही कॉन्फ़िगरेशन के साथ Cloud Run सेट अप करता है.

डेटा मिटाने की नीति बनाना

Firebase App Hosting अपने-आप लागू होने वाले बिल्ड के रखरखाव और क्लीनअप की नीति लागू करता है. इस नीति के तहत, App Hosting पिछले 14 दिनों के आपके सफल बिल्ड और उनसे जुड़े Cloud Run बदलावों को सेव रखता है. इसके अलावा, यह पक्का करने के लिए कि आपके पास हमेशा रोल बैक करने के लिए कोई बिल्ड हो, App Hosting आपके पांच सबसे हाल ही के सफल बिल्ड और रोलआउट को सेव करके रखता है. भले ही, वे कितने भी पुराने हों.

App Hosting, फ़िलहाल चालू ट्रैफ़िक स्प्लिट में मौजूद या रोलआउट की प्रोसेस में शामिल किसी भी बिल्ड को कभी नहीं मिटाएगा या हटाएगा.

जब पुरानी बिल्ड, रखरखाव की इन सीमाओं से ज़्यादा हो जाती हैं, तो उनकी इंटरनल स्थिति को EXPIRED के तौर पर अपडेट कर दिया जाता है. EXPIRED बिल्ड को तुरंत रोल बैक नहीं किया जा सकता. साथ ही, इन बिल्ड पर रोल बैक करने का विकल्प, Firebase कंसोल से हटा दिया जाएगा. इसके बजाय, आपको उसी सोर्स को टारगेट करने वाला नया बिल्ड बनाना होगा. जैसे, git कमिट, Artifact Registry में मौजूद कंटेनर या Google Cloud Storage बकेट. इसके बाद, आपको उस बिल्ड को रोल आउट करना होगा.

बिल्ड रिसॉर्स को बचाने का एक तरीका यह है कि यह कंट्रोल किया जाए कि ऑटोमैटिक रोलआउट को कितनी बार ट्रिगर किया जाए. अपने-आप रोल आउट होने की सुविधा को मैनेज करना लेख पढ़ें.

ज़्यादा जानें

App Hosting की पूरी बिल्ड प्रोसेस ओपन सोर्स है.