सीआई/सीडी के लिए, Data Connect एम्युलेटर का इस्तेमाल करें

Firebase Data Connect, एंड-टू-एंड प्रोटोटाइपिंग के साथ-साथ, लगातार इंटिग्रेशन और लगातार डिप्लॉयमेंट (सीआई/सीडी) फ़्लो के लिए, आपको एक स्थानीय एमुलेटर उपलब्ध कराता है:

  • Data Connect एमुलेटर, एक स्थानीय इंटिग्रेट किए गए PGLite डेटाबेस इंस्टेंस के साथ इंटरैक्ट करता है. इससे आपको क्वेरी और म्यूटेशन का प्रोटोटाइप बनाने और पूरी तरह से स्थानीय एनवायरमेंट में क्लाइंट कोड की जांच करने में मदद मिलती है.
  • Data Connect एमुलेटर का इस्तेमाल, इंटरैक्टिव काम के अलावा अन्य कामों के लिए भी किया जा सकता है. इसकी मदद से, ऑटोमेटेड टेस्ट चलाए जा सकते हैं. साथ ही, यह CI/CD वर्कफ़्लो के साथ इस्तेमाल करने के लिए सही है. यह तब काम आता है, जब आपके स्कीमा स्थिर हों और आपको क्लाइंट-साइड कोड का प्रोटोटाइप बनाना हो और उसकी जांच करनी हो.

इस गाइड में, क्विकस्टार्ट गाइड की तुलना में, एमुलेटर को इंस्टॉल करने और इस्तेमाल करने के बारे में ज़्यादा जानकारी दी गई है.

Data Connect एम्युलेटर इंस्टॉल करना

Data Connect एमुलेटर का इस्तेमाल करने के लिए, Local Emulator Suite इंस्टॉल करने से पहले, आपको ये चीज़ें चाहिए:

  • Node.js का 18.0 या इसके बाद का वर्शन.

Firebase सीएलआई इंस्टॉल करना और प्रोजेक्ट डायरेक्ट्री सेट अप करना

  1. इंस्टॉल करने की गाइड का पालन करके, Firebase सीएलआई इंस्टॉल करें. इम्यूलेटर को नियमित तौर पर अपडेट करना न भूलें, क्योंकि Data Connect इम्यूलेटर को लगातार अपडेट किया जा रहा है. इसमें गड़बड़ियों को ठीक करने और नई सुविधाएं जोड़ने के लिए काम किया जा रहा है.

  2. अगर आपने अब तक ऐसा नहीं किया है, तो मौजूदा वर्किंग डायरेक्ट्री को Firebase प्रोजेक्ट के तौर पर शुरू करें. इसके लिए, प्रॉम्प्ट का पालन करके यह तय करें कि किन प्रॉडक्ट का इस्तेमाल करना है:

    firebase init
    

Local Emulator Suite कॉन्फ़िगरेशन सेट करना या उसमें बदलाव करना

अगर आपने Firebase VS Code के एक्सटेंशन से Data Connect एम्युलेटर शुरू किया है, तो ज़रूरत पड़ने पर एम्युलेटर आपके लिए इंस्टॉल हो गया होगा.

Firebase CLI का इस्तेमाल करके, Local Emulator Suite के चुने गए अन्य कॉम्पोनेंट के साथ-साथ, एमुलेटर को मैन्युअल तरीके से इंस्टॉल किया जा सकता है. यह कमांड, कॉन्फ़िगरेशन विज़र्ड को शुरू करता है. इसकी मदद से, अपनी पसंद के एमुलेटर चुने जा सकते हैं, उनसे जुड़ी एमुलेटर बाइनरी फ़ाइलें डाउनलोड की जा सकती हैं, और डिफ़ॉल्ट पोर्ट सही न होने पर एमुलेटर पोर्ट सेट किए जा सकते हैं.

  firebase init emulators

किसी एमुलेटर को इंस्टॉल करने के बाद, अपडेट की जांच नहीं की जाती. साथ ही, Firebase CLI वर्शन को अपडेट करने तक, कोई और अपडेट अपने-आप डाउनलोड नहीं होगा.

कोई Firebase प्रोजेक्ट चुनना

सेटअप फ़्लो में, Firebase CLI आपको Firebase प्रोजेक्ट चुनने या बनाने के लिए कहता है. अगर आपने Firebase कंसोल में Data Connect की मदद से कोई मौजूदा प्रोजेक्ट सेट अप किया है, तो आपको उसमें चुना गया कॉन्फ़िगरेशन सुझाया जाएगा.

एम्युलेटर सेट अप करना

एम्युलेटर कॉन्फ़िगर करना

firebase init फ़्लो को चलाने पर, आपको एमुलेटर के सेटअप के विकल्पों के बारे में जानकारी मिलेगी. Local Emulator Suite में मौजूद अन्य एम्युलेटर की तरह ही, कॉन्फ़िगरेशन पैरामीटर को लोकल प्रोजेक्ट फ़ाइलों में सेव किया जाता है.

  • आपकी firebase.json फ़ाइल में, एमुलेटर पोर्ट असाइनमेंट शामिल हैं.
    • emulators:ui कुंजी, Data Connect एमुलेटर पर लागू नहीं होती.

स्थानीय और प्रोडक्शन Data Connect संसाधनों के साथ काम करना

अगर आपको यह पक्का करना है कि प्रोडक्शन रिसॉर्स पर असर न पड़े, तो demo-projectID सेट करें या पक्का करें कि आपके क्लाइंट कोड को एमुलेटर से कनेक्ट करने के लिए इंस्ट्रूमेंट किया गया हो. इस बारे में अगले सेक्शन में बताया गया है.

एम्युलेटर शुरू करना

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

firebase emulators:exec ./path/to/test-script.sh

अगर क्लाइंट कोड में पहले से तय की गई क्वेरी और म्यूटेशन इंटिग्रेट किए जा रहे हैं और क्लाइंट की जांच के लिए खास तौर पर एमुलेटर का इस्तेमाल किया जा रहा है, तो इंटरैक्टिव काम के लिए start विकल्प का इस्तेमाल किया जा सकता है. VS Code एक्सटेंशन से भी एमुलेटर को शुरू किया जा सकता है.

firebase emulators:start

एमुलेटर से बात करने के लिए, अपने क्लाइंट कोड को इंस्ट्रूमेंट करना

Data Connect एमुलेटर के साथ इंटरैक्ट करने के लिए, अपने इन-ऐप्लिकेशन कॉन्फ़िगरेशन या टेस्ट क्लास को इस तरह सेट अप करें.

JavaScript
import { initializeApp } from "firebase/app";
import { connectorConfig } from "@name-of-package";
import { connectDataConnectEmulator, getDataConnect } from 'firebase/data-connect';

// TODO: Replace the following with your app's Firebase project configuration
const firebaseConfig = {
  //...
};

const app = initializeApp(firebaseConfig);

const dataConnect = getDataConnect(app, connectorConfig);
connectDataConnectEmulator(dataConnect, "localhost", 9399);

// Make calls from your app
  
Kotlin Android
val connector = MoviesConnector.instance

// Connect to the emulator on "10.0.2.2:9399"
connector.dataConnect.useEmulator()

// (Alternatively) if you're running your emulator on non-default port:
connector.dataConnect.useEmulator(port = 9999)

// Make calls from your app
  
iOS
let connector = DataConnect.dataConnect(DefaultConnectorClient.connectorConfig)

// Connect to the emulator on "127.0.0.1:9399"
connector.useEmulator()

// (alternatively) if you're running your emulator on non-default port:
connector.useEmulator(port: 9999)

// Make calls from your app
  

जांच करने और लगातार इंटिग्रेशन करने के लिए, एमुलेटर का इस्तेमाल करना

कंटेनर में मौजूद Local Emulator Suite इमेज चलाना

आम तौर पर, सीआई सेटअप में कंटेनर के साथ Local Emulator Suite को इंस्टॉल करना और कॉन्फ़िगर करना आसान होता है.

ध्यान देने वाली कुछ बातें:

  • एम्युलेटर बाइनरी, ~/.cache/firebase/emulators/ पर इंस्टॉल और कैश मेमोरी में सेव की जाती हैं. बार-बार डाउनलोड होने से बचने के लिए, इस पाथ को अपने सीआई कैश मेमोरी कॉन्फ़िगरेशन में जोड़ा जा सकता है.
  • अगर आपकी रिपॉज़िटरी में firebase.json फ़ाइल नहीं है, तो आपको यह बताने के लिए कि कौनसे एमुलेटर शुरू करने हैं, emulators:start या emulators:exec कमांड में कमांड लाइन आर्ग्युमेंट जोड़ना होगा. उदाहरण के लिए, --only dataconnect.

टेस्ट के बीच अपना डेटाबेस मिटाना

रन के बीच अपने टेस्टिंग एनवायरमेंट को रीसेट करने के लिए, Firebase का सुझाव है कि:

  • इन कामों को करने के लिए, खास म्यूटेशन लिखना:
    • सेटअप में, किसी स्थानीय डेटाबेस इंस्टेंस में शुरुआती डेटा डालें.
    • टियरडाउन में, टेस्ट के बाद के डेटाबेस इंस्टेंस से बदला गया डेटा मिटाएं.

Data Connect एमुलेटर, प्रोडक्शन से कैसे अलग है

Data Connect एमुलेटर, सर्वर-साइड प्रॉडक्ट की कई सुविधाओं को सिम्युलेट करता है. हालांकि, इसके कुछ अपवाद हैं:

  • PGLite का वर्शन और ज़्यादा जानकारी वाला कॉन्फ़िगरेशन, आपके प्रोडक्शन Cloud SQL इंस्टेंस के वर्शन से अलग हो सकता है.
  • अगर Data Connect के pgvector और Vertex API इंटिग्रेशन के साथ डेवलप करने के लिए, एमुलेटर का इस्तेमाल किया जा रहा है, तो Cloud SQL के Vertex इंटिग्रेशन के बजाय, Cloud Vertex API को सीधे कॉल किया जाता है. हालांकि, प्रोडक्शन एपीआई को कॉल अब भी किए जाते हैं. इसका मतलब है कि आपको किसी असली Firebase प्रोजेक्ट का इस्तेमाल करना होगा, demo- प्रोजेक्ट का इस्तेमाल नहीं किया जा सकता. साथ ही, Vertex API के लिए शुल्क लिया जाएगा.