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

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

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

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

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

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

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

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

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

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

    firebase init

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

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

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

  firebase init emulators

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

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

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

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

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

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

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

स्थानीय और प्रोडक्शन SQL Connect संसाधनों का इस्तेमाल करना

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

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

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

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

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

firebase emulators:start

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

SQL 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 का सुझाव है कि हर रन के बीच अपने टेस्ट एनवायरमेंट को रीसेट करने के लिए:

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

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

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

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