CI/CD এর জন্য SQL Connect এমুলেটর ব্যবহার করুন

Firebase SQL Connect আপনাকে এন্ড-টু-এন্ড প্রোটোটাইপিংয়ের পাশাপাশি কন্টিনিউয়াস ইন্টিগ্রেশন এবং কন্টিনিউয়াস ডিপ্লয়মেন্ট (CI/CD) ফ্লো-এর জন্য একটি লোকাল এমুলেটর প্রদান করে:

  • SQL Connect এমুলেটরটি একটি স্থানীয় ইন্টিগ্রেটেড PGLite ডাটাবেস ইনস্ট্যান্সের সাথে ইন্টারঅ্যাক্ট করে, যার মাধ্যমে আপনি সম্পূর্ণ স্থানীয় পরিবেশে কোয়েরি ও মিউটেশনের প্রোটোটাইপ তৈরি করতে এবং ক্লায়েন্ট কোড পরীক্ষা করতে পারেন।
  • SQL Connect এমুলেটরটি নন-ইন্টারেক্টিভ কাজের জন্যও ব্যবহার করা যেতে পারে। এটি আপনাকে স্বয়ংক্রিয় পরীক্ষা চালাতে দেয় এবং CI/CD ওয়ার্কফ্লোর সাথে ব্যবহারের জন্য উপযুক্ত। এটি তখন কাজে আসে যখন আপনার স্কিমাগুলো স্থিতিশীল থাকে এবং আপনি ক্লায়েন্ট-সাইড কোডের প্রোটোটাইপ তৈরি ও পরীক্ষা করতে চান।

এই নির্দেশিকাটি কুইকস্টার্টের চেয়ে এমুলেটরের ইনস্টলেশন এবং ব্যবহার সম্পর্কে আরও বিস্তারিতভাবে আলোচনা করে।

SQL Connect এমুলেটর ইনস্টল করুন

SQL Connect এমুলেটর ব্যবহার করার জন্য Local Emulator Suite ইনস্টল করার আগে, আপনার নিম্নলিখিত জিনিসগুলির প্রয়োজন হবে:

  • Node.js ভার্সন ১৮.০ বা তার চেয়ে উচ্চতর।

Firebase CLI ইনস্টল করুন এবং প্রজেক্ট ডিরেক্টরি সেট আপ করুন।

  1. ইনস্টলেশন গাইড অনুসরণ করে Firebase CLI ইনস্টল করুন। নিয়মিত আপডেট করতে ভুলবেন না, কারণ বাগ ফিক্স এবং নতুন ফিচার যুক্ত করার মাধ্যমে SQL Connect এমুলেটরটির সক্রিয় উন্নয়ন চলছে।

  2. যদি আপনি ইতিমধ্যে তা না করে থাকেন, তাহলে কোন পণ্যগুলি ব্যবহার করবেন তা নির্দিষ্ট করতে নির্দেশাবলী অনুসরণ করে বর্তমান ওয়ার্কিং ডিরেক্টরিটিকে একটি Firebase প্রজেক্ট হিসাবে শুরু করুন:

    firebase init

Local Emulator Suite কনফিগারেশন সেট বা পরিবর্তন করুন

আপনি যদি SQL Connect VS Code এক্সটেনশন থেকে SQL Connect এমুলেটরটি চালু করে থাকেন, তাহলে প্রয়োজন অনুযায়ী এমুলেটরটি আপনার জন্য ইনস্টল করা হয়েছিল।

আপনি Firebase CLI) ব্যবহার করে Local Emulator Suite অন্যান্য নির্বাচিত উপাদানগুলোর সাথে এমুলেটরটি ম্যানুয়ালি ইনস্টল করতে পারেন। এই কমান্ডটি একটি কনফিগারেশন উইজার্ড চালু করে, যা আপনাকে আপনার পছন্দের এমুলেটরগুলো নির্বাচন করতে, সংশ্লিষ্ট এমুলেটরের বাইনারি ফাইলগুলো ডাউনলোড করতে এবং ডিফল্ট পোর্টগুলো উপযুক্ত না হলে এমুলেটরের পোর্ট সেট করতে দেয়।

  firebase init emulators

একবার এমুলেটর ইনস্টল হয়ে গেলে, আপনার Firebase CLI সংস্করণ আপডেট না করা পর্যন্ত কোনো আপডেট চেক করা হয় না এবং কোনো অতিরিক্ত স্বয়ংক্রিয় ডাউনলোডও হবে না।

একটি ফায়ারবেস প্রজেক্ট বেছে নিন

সেটআপ প্রক্রিয়ার সময়, Firebase CLI আপনাকে একটি Firebase প্রজেক্ট বেছে নিতে বা তৈরি করতে বলে। আপনি যদি Firebase কনসোলে SQL Connect দিয়ে সেটআপ করা কোনো বিদ্যমান প্রজেক্ট বেছে নেন, তাহলে সেখানে আপনার বেছে নেওয়া কনফিগারেশনটি সাজেস্ট করা হবে।

এমুলেটর সেট আপ করুন

এমুলেটর কনফিগার করুন

firebase init ফ্লোটি চালালে আপনাকে এমুলেটর সেটআপের বিকল্পগুলো সম্পর্কে নির্দেশনা দেওয়া হবে। Local Emulator Suite এর অন্যান্য এমুলেটরগুলোর মতোই, কনফিগারেশন প্যারামিটারগুলো স্থানীয় প্রজেক্ট ফাইলে সংরক্ষিত থাকে।

  • আপনার firebase.json ফাইলে এমুলেটর পোর্ট অ্যাসাইনমেন্ট রয়েছে।
    • ` emulators:ui কী-টি SQL Connect এমুলেটরের ক্ষেত্রে প্রযোজ্য নয়।

স্থানীয় এবং প্রোডাকশন SQL Connect রিসোর্স নিয়ে কাজ করুন

প্রোডাকশন রিসোর্সের ওপর কোনো প্রভাব না ফেলার ব্যাপারে নিশ্চিত হতে চাইলে, একটি demo- প্রজেক্ট আইডি সেট করুন অথবা নিশ্চিত করুন যে আপনার ক্লায়েন্ট কোডটি এমুলেটরের সাথে সংযোগ করার জন্য ইনস্ট্রুমেন্টেড আছে, যেমনটি পরবর্তী একটি বিভাগে আলোচনা করা হয়েছে।

এমুলেটরটি চালু করুন

আপনি যদি এমুলেটরটি নন-ইন্টারঅ্যাক্টিভভাবে চালান, যেমন CI/CD ওয়ার্কফ্লোর জন্য, তাহলে এটি exec অপশন দিয়ে চালু করুন।

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

যদি আপনি ক্লায়েন্ট কোডে পূর্বনির্ধারিত কোয়েরি এবং মিউটেশন একীভূত করেন এবং বিশেষত ক্লায়েন্ট পরীক্ষার জন্য এমুলেটরটি ব্যবহার করেন, তাহলে আপনি ইন্টারেক্টিভ কাজের জন্য start অপশনটি ব্যবহার করতে পারেন। এছাড়াও আপনি SQL Connect VS Code এক্সটেনশন থেকে এমুলেটরটি চালু করতে পারেন।

firebase emulators:start

এমুলেটরের সাথে যোগাযোগের জন্য আপনার ক্লায়েন্ট কোডকে ইনস্ট্রুমেন্ট করুন।

SQL Connect এমুলেটরের সাথে ইন্টারঅ্যাক্ট করার জন্য আপনার ইন-অ্যাপ কনফিগারেশন বা টেস্ট ক্লাসগুলো নিম্নরূপভাবে সেট আপ করুন।

জাভাস্ক্রিপ্ট
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
  
কোটলিন অ্যান্ড্রয়েড
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
  
আইওএস
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 ইমেজ চালান

একটি সাধারণ CI সেটআপে কন্টেইনার সহ Local Emulator Suite ইনস্টলেশন এবং কনফিগারেশন বেশ সহজ।

কয়েকটি বিষয় লক্ষণীয়:

  • এমুলেটর বাইনারিগুলো ~/.cache/firebase/emulators/ -এ ইনস্টল এবং ক্যাশ করা হয়। বারবার ডাউনলোড এড়াতে আপনি আপনার CI ক্যাশ কনফিগারেশনে এই পাথটি যোগ করতে পারেন।
  • আপনার রিপোজিটরিতে যদি firebase.json ফাইল না থাকে, তাহলে কোন কোন এমুলেটর চালু করা হবে তা নির্দিষ্ট করার জন্য আপনাকে emulators:start অথবা emulators:exec কমান্ডে একটি কমান্ড লাইন আর্গুমেন্ট যোগ করতে হবে। উদাহরণস্বরূপ, --only dataconnect

পরীক্ষাগুলোর মাঝে আপনার ডাটাবেস পরিষ্কার করুন।

রানগুলোর মাঝে আপনার টেস্ট এনভায়রনমেন্ট রিসেট করতে, Firebase নিম্নলিখিত বিষয়গুলো সুপারিশ করে:

  • নিম্নলিখিত বিষয়গুলো সামলানোর জন্য বিশেষ মিউটেশন লেখা:
    • সেটআপের সময়, প্রাথমিক ডেটা দিয়ে একটি স্থানীয় ডেটাবেস ইনস্ট্যান্স পূরণ করুন।
    • টিয়ারডাউনের সময়, পোস্ট-টেস্ট ডাটাবেস ইনস্ট্যান্স থেকে পরিবর্তিত ডেটা মুছে ফেলুন।

প্রোডাকশন থেকে SQL Connect এমুলেটর কীভাবে আলাদা

SQL Connect এমুলেটরটি সার্ভার-সাইড প্রোডাক্টের অনেক বৈশিষ্ট্য অনুকরণ করে। তবে, কিছু ব্যতিক্রম রয়েছে যা সম্পর্কে সচেতন থাকা প্রয়োজন:

  • PGLite-এর ভার্সন এবং বিস্তারিত কনফিগারেশন আপনার প্রোডাকশন ক্লাউড SQL ইনস্ট্যান্সের ভার্সন থেকে ভিন্ন হতে পারে।
  • আপনি যদি SQL Connect এর pgvector এবং Vertex API ইন্টিগ্রেশন ব্যবহার করে ডেভেলপ করার জন্য এমুলেটরটি ব্যবহার করেন, তাহলে Cloud SQL-এর Vertex ইন্টিগ্রেশনের মাধ্যমে না গিয়ে সরাসরি Cloud Vertex API-তে কল করা হয়। তবে, প্রোডাকশন API-তে কল ঠিকই করা হয়, যার অর্থ হলো আপনাকে অবশ্যই একটি আসল Firebase প্রজেক্ট ব্যবহার করতে হবে, কোনো demo- প্রজেক্ট ব্যবহার করা যাবে না এবং Vertex API-এর খরচ বহন করতে হবে।