ফায়ারবেস লোকাল এমুলেটর স্যুটটি বিভিন্ন প্রোটোটাইপ এবং টেস্ট এনভায়রনমেন্টের জন্য ইনস্টল ও কনফিগার করা যেতে পারে, যা এককালীন প্রোটোটাইপিং সেশন থেকে শুরু করে প্রোডাকশন-স্কেল কন্টিনিউয়াস ইন্টিগ্রেশন ওয়ার্কফ্লো পর্যন্ত সবকিছুর জন্য ব্যবহারযোগ্য।
লোকাল এমুলেটর স্যুট ইনস্টল করুন
এমুলেটর স্যুট ইনস্টল করার আগে আপনার যা যা প্রয়োজন হবে:
এমুলেটর স্যুট ইনস্টল করতে:
- Firebase CLI ইনস্টল করুন। যদি আপনার Firebase CLI আগে থেকে ইনস্টল করা না থাকে, তবে এখনই এটি ইনস্টল করুন । Emulator Suite ব্যবহার করার জন্য আপনার CLI ভার্সন 8.14.0 বা তার উচ্চতর সংস্করণ প্রয়োজন হবে। নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনি আপনার ইনস্টল করা সংস্করণটি পরীক্ষা করতে পারেন:
firebase --version
- যদি আপনি ইতিমধ্যে তা না করে থাকেন, তাহলে কোন পণ্যগুলি ব্যবহার করবেন তা নির্দিষ্ট করতে স্ক্রিনে প্রদর্শিত নির্দেশাবলী অনুসরণ করে বর্তমান ওয়ার্কিং ডিরেক্টরিটিকে একটি Firebase প্রজেক্ট হিসাবে শুরু করুন:
firebase init
- এমুলেটর স্যুট সেট আপ করুন। এই কমান্ডটি একটি কনফিগারেশন উইজার্ড চালু করে, যা আপনাকে আপনার পছন্দের এমুলেটরগুলো নির্বাচন করতে, সংশ্লিষ্ট এমুলেটরের বাইনারি ফাইলগুলো ডাউনলোড করতে এবং ডিফল্ট পোর্টগুলো উপযুক্ত না হলে এমুলেটর পোর্ট সেট করতে দেয়।
firebase init emulators
একবার এমুলেটর ইনস্টল হয়ে গেলে, আপনার Firebase CLI সংস্করণ আপডেট না করা পর্যন্ত কোনো আপডেট চেক করা হয় না এবং কোনো অতিরিক্ত স্বয়ংক্রিয় ডাউনলোডও হবে না।
এমুলেটর স্যুট কনফিগার করুন
আপনি চাইলে firebase.json ফাইলে এমুলেটরগুলোর নেটওয়ার্ক পোর্ট এবং সিকিউরিটি রুলস ডেফিনিশনের পাথ কনফিগার করতে পারেন:
-
firebase init emulatorsচালিয়ে অথবাfirebase.jsonম্যানুয়ালি সম্পাদনা করে এমুলেটর পোর্ট পরিবর্তন করুন। -
firebase.jsonম্যানুয়ালি সম্পাদনা করে সিকিউরিটি রুলস ডেফিনিশনের পাথ পরিবর্তন করুন।
আপনি যদি এই সেটিংসগুলো কনফিগার না করেন, তাহলে এমুলেটরগুলো তাদের ডিফল্ট পোর্টে কাজ করবে এবং Cloud Firestore , Realtime Database ও Cloud Storage for Firebase এমুলেটরগুলো উন্মুক্ত ডেটা নিরাপত্তা সহকারে চলবে।
| আদেশ | বর্ণনা |
|---|---|
| ইনিট এমুলেটর | একটি এমুলেটর ইনিশিয়ালাইজেশন উইজার্ড চালু করুন। ইনস্টল করার জন্য এমুলেটরগুলো শনাক্ত করুন এবং ঐচ্ছিকভাবে এমুলেটর পোর্ট সেটিংস নির্দিষ্ট করুন। init emulators কোনো ডেটা নষ্ট করে না; ডিফল্ট সেটিংস গ্রহণ করলে বর্তমান এমুলেটর কনফিগারেশন সংরক্ষিত থাকবে। |
পোর্ট কনফিগারেশন
প্রতিটি এমুলেটর আপনার মেশিনের একটি ভিন্ন পোর্টের সাথে একটি পছন্দের ডিফল্ট মান সহ সংযুক্ত হয়।
| এমুলেটর | ডিফল্ট পোর্ট |
|---|---|
| Authentication | ৯০৯৯ |
| App Hosting | ৫০০২ |
| Emulator Suite UI | ৪০০০ |
| Cloud Functions | ৫০০১ |
| ইভেন্টার্ক | ৯২৯৯ |
| Realtime Database | ৯০০০ |
| Cloud Firestore | ৮০৮০ |
| Cloud Storage for Firebase | ৯১৯৯ |
| Firebase Hosting | ৫০০০ |
| Pub/Sub | ৮০৮৫ |
প্রজেক্ট আইডি কনফিগারেশন
আপনি কীভাবে এমুলেটর ব্যবহার করছেন তার উপর নির্ভর করে, আপনি বিভিন্ন Firebase প্রজেক্ট আইডি ব্যবহার করে একটি এমুলেটরের একাধিক ইনস্ট্যান্স চালাতে পারেন, অথবা একটি নির্দিষ্ট প্রজেক্ট আইডির জন্য একাধিক এমুলেটর ইনস্ট্যান্স চালাতে পারেন। এই ধরনের ক্ষেত্রে, এমুলেটর ইনস্ট্যান্সগুলো একটি পৃথক পরিবেশে চলে।
সাধারণত সমস্ত এমুলেটর ব্যবহারের জন্য একটিই প্রজেক্ট আইডি সেট করা একটি ভালো অভ্যাস, যাতে Emulator Suite UI , বিভিন্ন প্রোডাক্টের এমুলেটর এবং একটি নির্দিষ্ট এমুলেটরের চলমান সমস্ত ইনস্ট্যান্স সব ক্ষেত্রে সঠিকভাবে যোগাযোগ করতে পারে।
Local Emulator Suite এনভায়রনমেন্টে একাধিক প্রজেক্ট আইডি শনাক্ত করলে সতর্কবার্তা জারি করে, তবে আপনি আপনার firebase.json ফাইলে singleProjectMode কী-টির মান false সেট করে এই আচরণটি অগ্রাহ্য করতে পারেন।
আপনি প্রজেক্ট আইডি ঘোষণাপত্রগুলিতে কোনো অমিল আছে কিনা তা নিম্নলিখিতগুলিতে পরীক্ষা করতে পারেন:
- কমান্ড লাইনের ডিফল্ট প্রজেক্ট। ডিফল্টরূপে, স্টার্টআপের সময়
firebase initবাfirebase useদিয়ে নির্বাচিত প্রজেক্ট থেকে প্রজেক্ট আইডি নেওয়া হবে। প্রজেক্টের তালিকা দেখতে (এবং কোনটি নির্বাচিত আছে তা জানতে)firebase projects:listব্যবহার করুন। - রুলস ইউনিট টেস্ট। রুলস ইউনিট টেস্টিং লাইব্রেরির
initializeTestEnvironmentবাinitializeTestAppমেথডগুলো কল করার সময় প্রায়শই প্রোজেক্ট আইডি উল্লেখ করা হয়। - কমান্ড লাইন
--projectফ্ল্যাগ। Firebase CLI-তে--projectফ্ল্যাগ ব্যবহার করলে ডিফল্ট প্রজেক্টটি ওভাররাইড হয়ে যায়। ইউনিট টেস্ট এবং অ্যাপ ইনিশিয়ালাইজেশনের সময় আপনাকে নিশ্চিত করতে হবে যেন ফ্ল্যাগের মানটি প্রজেক্ট আইডির সাথে মেলে।
আপনার Apple প্ল্যাটফর্ম , Android এবং ওয়েব প্রজেক্ট কনফিগার করার সময় সেট করা প্ল্যাটফর্ম-নির্দিষ্ট প্রজেক্ট আইডি কনফিগারেশনগুলোও যাচাই করুন।
নিরাপত্তা নিয়ম কনফিগারেশন
এমুলেটরগুলো firebase.json এ থাকা database , firestore এবং storage configuration কীগুলো থেকে Security Rules-এর কনফিগারেশন গ্রহণ করবে।
{
// Existing firebase configuration ...
"database": {
"rules": "database.rules.json"
},
"firestore": {
"rules": "firestore.rules"
},
"storage": {
"rules": "storage.rules"
}
// ...
// Optional emulator configuration. Default
// values are used if absent.
"emulators": {
"singleProjectMode": false, // do not warn on detection of multiple project IDs
"firestore": {
"port": "8080"
},
"ui": {
"enabled": true, // Default is `true`
"port": 4000 // If unspecified, see CLI log for selected port
},
"auth": {
"port": "9099"
},
"pubsub": {
"port": "8085"
}
}
}
জাভা বিকল্পগুলি নির্দিষ্ট করা
Realtime Database এমুলেটর, Cloud Firestore এমুলেটর এবং Cloud Storage for Firebase এমুলেটরের একটি অংশ জাভার উপর ভিত্তি করে তৈরি, যা JAVA_TOOL_OPTIONS এনভায়রনমেন্ট ভেরিয়েবলের মাধ্যমে JVM ফ্ল্যাগ ব্যবহার করে কাস্টমাইজ করা যায়।
উদাহরণস্বরূপ, যদি আপনি জাভা হিপ স্পেস সম্পর্কিত ত্রুটির সম্মুখীন হন, তাহলে আপনি সর্বোচ্চ জাভা হিপ সাইজ বাড়িয়ে ৪ জিবি করতে পারেন:
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
একাধিক ফ্ল্যাগ উদ্ধৃতি চিহ্নের মধ্যে স্পেস দিয়ে আলাদা করে উল্লেখ করা যেতে পারে, যেমন JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g" । এই ফ্ল্যাগগুলো শুধুমাত্র এমুলেটরের জাভা-ভিত্তিক উপাদানগুলোকে প্রভাবিত করে এবং Firebase CLI-এর অন্যান্য অংশ, যেমন Emulator Suite UI উপর কোনো প্রভাব ফেলে না।
এমুলেটর চালু করুন
আপনি এমুলেটরগুলোকে ম্যানুয়ালি বন্ধ না করা পর্যন্ত চালু রাখতে পারেন, অথবা একটি নির্দিষ্ট টেস্ট স্ক্রিপ্টের সময়কাল পর্যন্ত চালিয়ে স্বয়ংক্রিয়ভাবে বন্ধ করার জন্য সেট করতে পারেন।
| আদেশ | বর্ণনা | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| এমুলেটর:শুরু | firebase.json এ কনফিগার করা Firebase প্রোডাক্টগুলোর জন্য এমুলেটরগুলো চালু করুন। এমুলেটর প্রসেসগুলো স্পষ্টভাবে বন্ধ না করা পর্যন্ত চলতে থাকবে। যদি এমুলেটরগুলো আগে থেকে ইনস্টল করা না থাকে, তাহলে emulators:start কল করলে সেগুলো ~/.cache/firebase/emulators/ ফোল্ডারে ডাউনলোড হয়ে যাবে।
| ||||||||||||||
| এমুলেটর:এক্সিক scriptpath | firebase.json এ কনফিগার করা Firebase প্রোডাক্টগুলোর জন্য এমুলেটর চালু করার পর scriptpath এ থাকা স্ক্রিপ্টটি চালান। স্ক্রিপ্টটির চালানো শেষ হলে এমুলেটর প্রসেসগুলো স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।
|
কন্টিনিউয়াস ইন্টিগ্রেশন ওয়ার্কফ্লোর জন্য firebase emulators:exec মেথডটি সাধারণত বেশি উপযুক্ত।
এমুলেটর ডেটা রপ্তানি এবং আমদানি করুন
আপনি Authentication , Cloud Firestore , Realtime Database এবং Cloud Storage for Firebase এমুলেটরগুলো থেকে ডেটা এক্সপোর্ট করে একটি শেয়ারযোগ্য, সাধারণ বেসলাইন ডেটা সেট হিসেবে ব্যবহার করতে পারেন। উপরে বর্ণিত পদ্ধতি অনুযায়ী, এই ডেটা সেটগুলো --import ফ্ল্যাগ ব্যবহার করে ইম্পোর্ট করা যায়।
| এমুলেটর:এক্সপোর্ট export_directory | Authentication , Cloud Firestore , Realtime Database অথবা Cloud Storage for Firebase এমুলেটর । একটি চলমান Cloud Firestore , Realtime Database অথবা Cloud Storage for Firebase এমুলেটর ইনস্ট্যান্স থেকে ডেটা এক্সপোর্ট করুন। নির্দিষ্ট উপরে বর্ণিত |
আপনার CI সিস্টেমের সাথে একীভূত করুন
কন্টেইনারাইজড এমুলেটর স্যুট ইমেজ চালানো হচ্ছে
একটি সাধারণ CI সেটআপে কন্টেইনার সহ এমুলেটর স্যুটের ইনস্টলেশন এবং কনফিগারেশন বেশ সহজ।
কয়েকটি বিষয় লক্ষণীয়:
JAR ফাইলগুলি
~/.cache/firebase/emulators/-এ ইনস্টল এবং ক্যাশ করা হয়।- বারবার ডাউনলোড এড়ানোর জন্য আপনি এই পাথটি আপনার CI ক্যাশ কনফিগারেশনে যোগ করতে পারেন।
আপনার রিপোজিটরিতে যদি
firebase.jsonফাইল না থাকে, তাহলে কোন এমুলেটরগুলো চালু করা হবে তা নির্দিষ্ট করার জন্য আপনাকেemulators:startঅথবাemulators:execকমান্ডে একটি কমান্ড লাইন আর্গুমেন্ট যোগ করতে হবে। উদাহরণস্বরূপ,
--only functions,firestore।
একটি অথোরাইজেশন টোকেন তৈরি করুন (শুধুমাত্র হোস্টিং এমুলেটরের জন্য)
আপনার কন্টিনিউয়াস ইন্টিগ্রেশন ওয়ার্কফ্লো যদি Firebase Hosting উপর নির্ভরশীল হয়, তাহলে firebase emulators:exec চালানোর জন্য আপনাকে একটি টোকেন ব্যবহার করে লগ ইন করতে হবে। অন্যান্য এমুলেটরগুলোর জন্য লগ ইনের প্রয়োজন হয় না।
একটি টোকেন তৈরি করতে, আপনার লোকাল এনভায়রনমেন্টে firebase login:ci চালান; এটি কোনো CI সিস্টেম থেকে করা উচিত নয়। প্রমাণীকরণের জন্য নির্দেশাবলী অনুসরণ করুন। প্রতিটি প্রজেক্টের জন্য এই ধাপটি কেবল একবারই করতে হবে, কারণ টোকেনটি সমস্ত বিল্ড জুড়ে বৈধ থাকবে। টোকেনটিকে পাসওয়ার্ডের মতো ব্যবহার করা উচিত; এটি যেন গোপন থাকে তা নিশ্চিত করুন।
যদি আপনার CI এনভায়রনমেন্টে বিল্ড স্ক্রিপ্টে ব্যবহার করার জন্য এনভায়রনমেন্ট ভেরিয়েবল নির্দিষ্ট করার সুযোগ থাকে, তাহলে FIREBASE_TOKEN নামে একটি এনভায়রনমেন্ট ভেরিয়েবল তৈরি করুন এবং এর ভ্যালু হিসেবে অ্যাক্সেস টোকেন স্ট্রিংটি দিন। Firebase CLI স্বয়ংক্রিয়ভাবে FIREBASE_TOKEN এনভায়রনমেন্ট ভেরিয়েবলটি গ্রহণ করবে এবং এমুলেটরগুলো সঠিকভাবে চালু হবে।
শেষ উপায় হিসেবে, আপনি আপনার বিল্ড স্ক্রিপ্টে টোকেনটি অন্তর্ভুক্ত করতে পারেন, তবে নিশ্চিত করুন যে অবিশ্বস্ত পক্ষগুলোর যেন এতে অ্যাক্সেস না থাকে। এই হার্ড-কোডেড পদ্ধতির জন্য, আপনি firebase emulators:exec কমান্ডে --token "YOUR_TOKEN_STRING_HERE" যোগ করতে পারেন।
Emulator Hub REST API ব্যবহার করুন
চলমান এমুলেটরগুলির তালিকা
বর্তমানে চলমান এমুলেটরগুলির তালিকা দেখতে, এমুলেটর হাবের /emulators এন্ডপয়েন্টে একটি GET অনুরোধ পাঠান।
curl localhost:4400/emulatorsফলাফলটি একটি JSON অবজেক্ট হবে, যেখানে চলমান সমস্ত এমুলেটর এবং তাদের হোস্ট/পোর্ট কনফিগারেশনের তালিকা থাকবে, উদাহরণস্বরূপ:
{
"hub":{
"name": "hub",
"host": "localhost",
"port": 4400
},
"functions": {
"name": "functions",
"host": "localhost",
"port": 5001
}
"firestore": {
"name": "firestore",
"host": "localhost",
"port": 8080
}
}
ব্যাকগ্রাউন্ড ফাংশন ট্রিগার সক্রিয় / নিষ্ক্রিয় করুন
কিছু পরিস্থিতিতে আপনাকে সাময়িকভাবে স্থানীয় ফাংশন এবং এক্সটেনশন ট্রিগারগুলি নিষ্ক্রিয় করতে হতে পারে। উদাহরণস্বরূপ, আপনি Cloud Functions বা Extensions এমুলেটরগুলিতে চলমান কোনো onDelete ফাংশন ট্রিগার না করেই Cloud Firestore এমুলেটরের সমস্ত ডেটা মুছে ফেলতে চাইতে পারেন।
স্থানীয় ফাংশন ট্রিগারগুলো সাময়িকভাবে নিষ্ক্রিয় করতে, এমুলেটর হাবের /functions/disableBackgroundTriggers এন্ডপয়েন্টে একটি PUT রিকোয়েস্ট পাঠান।
curl -X PUT localhost:4400/functions/disableBackgroundTriggersফলাফলটি একটি JSON অবজেক্ট হবে, যেখানে বর্তমান অবস্থার বিস্তারিত বিবরণ থাকবে।
{
"enabled": false
}
লোকাল ফাংশন ট্রিগারগুলো নিষ্ক্রিয় করার পর পুনরায় সক্রিয় করতে, এমুলেটর হাবের /functions/enableBackgroundTriggers এন্ডপয়েন্টে একটি PUT রিকোয়েস্ট পাঠান।
curl -X PUT localhost:4400/functions/enableBackgroundTriggersফলাফলটি একটি JSON অবজেক্ট হবে, যেখানে বর্তমান অবস্থার বিস্তারিত বিবরণ থাকবে।
{
"enabled": true
}
এমুলেটর এসডিকে ইন্টিগ্রেশন
এই বিভাগের সারণিগুলো নির্দেশ করে যে ক্লায়েন্ট এবং অ্যাডমিন এসডিকে দ্বারা কোন কোন এমুলেটর সমর্থিত। ‘ভবিষ্যৎ’ বলতে বোঝায় যে এমুলেটর সমর্থনের পরিকল্পনা রয়েছে, কিন্তু তা এখনও উপলব্ধ নয়।
ক্লায়েন্ট SDK উপলব্ধতা
| অ্যান্ড্রয়েড | অ্যাপল প্ল্যাটফর্ম | ওয়েব | ফায়ারবেস UI অ্যান্ড্রয়েড | ফায়ারবেস UI আইওএস | ফায়ারবেস UI ওয়েব | |
|---|---|---|---|---|---|---|
| Realtime Database | ১৯.৪.০ | ৭.২.০ | ৮.০.০ | ৬.৪.০ | ভবিষ্যৎ | প্রযোজ্য নয় |
| Cloud Firestore | ২১.৬.০ | ৭.২.০ | ৮.০.০ | ৬.৪.০ | ভবিষ্যৎ | প্রযোজ্য নয় |
| Authentication | ২০.০.০ | ৭.০.০ | ৮.০.০ | ৭.০.০ | ভবিষ্যৎ | ৪.৭.২ |
| Cloud Storage for Firebase | ২০.০.০ | ৮.০.০ | ৮.৪.০ | ৭.০.০ | ১১.০.০ | প্রযোজ্য নয় |
| Cloud Functions | ১৯.১.০ | ৭.২.০ | ৮.০.০ | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় |
| Hosting | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় |
| Extensions | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় |
অ্যাডমিন এসডিকে প্রাপ্যতা
| নোড | জাভা | পাইথন | যান | |
|---|---|---|---|---|
| Realtime Database | ৮.৬.০ | ৬.১০.০ | ২.১৮.০ | ভবিষ্যৎ |
| Cloud Firestore | ৮.০.০ | ৬.১০.০ | ৩.০.০ | ১.০.০ |
| Authentication | ৯.৩.০ | ৭.২.০ | ৫.০.০ | ৪.২.০ |
| Cloud Storage for Firebase | ৯.৮.০ | ভবিষ্যৎ | ভবিষ্যৎ | ভবিষ্যৎ |
| Cloud Functions | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় |
| Hosting | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় |
| Extensions | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় | প্রযোজ্য নয় |