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

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

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

  1. ubuntu: Workspace को शुरू करना.

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

  3. pre-buildpack: बिल्डपैक एनवायरमेंट तैयार करना.

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

  5. publisher: प्रोडक्शन के लिए Cloud Run कंटेनर को फ़ाइनल करना.

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

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

Workspace को शुरू करना

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

Preparer

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

Pre-buildpack

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

Build

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

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

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

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

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

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

Publisher

इस आखिरी चरण में, ऐप्लिकेशन के सोर्स कोड से निकाली गई सभी जानकारी के साथ-साथ, बिल्ड कंटेनर इमेज को पैकेज किया जाता है. इसके बाद, इसे 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 के बिल्ड की पूरी प्रोसेस, ओपन सोर्स है.