ফায়ারবেস লোকাল এমুলেটর স্যুটটি বিভিন্ন প্রোটোটাইপ এবং পরীক্ষার পরিবেশের জন্য ইনস্টল এবং কনফিগার করা যেতে পারে, এককালীন প্রোটোটাইপিং সেশন থেকে শুরু করে উৎপাদন-স্কেল ক্রমাগত ইন্টিগ্রেশন ওয়ার্কফ্লো পর্যন্ত যেকোনো কিছু।
স্থানীয় এমুলেটর স্যুট ইনস্টল করুন
এমুলেটর স্যুট ইনস্টল করার আগে আপনার প্রয়োজন হবে:
এমুলেটর স্যুট ইনস্টল করতে:
- Firebase CLI ইনস্টল করুন। যদি আপনার কাছে ইতিমধ্যে Firebase CLI ইনস্টল না থাকে, তাহলে এখনই এটি ইনস্টল করুন । এমুলেটর স্যুট ব্যবহার করার জন্য আপনার 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 এমুলেটর | একটি এমুলেটর ইনিশিয়ালাইজেশন উইজার্ড শুরু করুন। ইনস্টল করার জন্য এমুলেটরগুলি সনাক্ত করুন এবং ঐচ্ছিকভাবে এমুলেটর পোর্ট সেটিংস নির্দিষ্ট করুন। init emulators ধ্বংসাত্মক নয়; ডিফল্ট গ্রহণ করলে বর্তমান এমুলেটর কনফিগারেশন সংরক্ষণ করা হবে। |
পোর্ট কনফিগারেশন
প্রতিটি এমুলেটর আপনার মেশিনের একটি ভিন্ন পোর্টের সাথে একটি পছন্দসই ডিফল্ট মান সহ আবদ্ধ হয়।
| এমুলেটর | ডিফল্ট পোর্ট |
|---|---|
| Authentication | 9099 সম্পর্কে |
| App Hosting | ৫০০২ |
| Emulator Suite UI | ৪০০০ |
| Cloud Functions | ৫০০১ |
| ইভেন্টার্ক | ৯২৯৯ |
| Realtime Database | ৯০০০ |
| Cloud Firestore | ৮০৮০ |
| Cloud Storage for Firebase | ৯১৯৯ |
| Firebase Hosting | ৫০০০ |
| Pub/Sub | ৮০৮৫ |
প্রকল্প আইডি কনফিগারেশন
আপনি কীভাবে এমুলেটর ব্যবহার করেন তার উপর নির্ভর করে, আপনি বিভিন্ন ফায়ারবেস প্রজেক্ট আইডি ব্যবহার করে একটি এমুলেটরের একাধিক ইনস্ট্যান্স অথবা একটি প্রজেক্ট আইডির জন্য একাধিক এমুলেটর ইনস্ট্যান্স চালাতে পারেন। এই ধরনের ক্ষেত্রে, এমুলেটর ইনস্ট্যান্সগুলি একটি পৃথক পরিবেশে চলমান থাকে।
সকল এমুলেটর ইনভোকেশনের জন্য একটি প্রজেক্ট আইডি সেট করা সাধারণত একটি ভালো অভ্যাস, যাতে Emulator Suite UI , বিভিন্ন পণ্য এমুলেটর এবং একটি নির্দিষ্ট এমুলেটরের সমস্ত চলমান ইনস্ট্যান্স সকল ক্ষেত্রে সঠিকভাবে যোগাযোগ করতে পারে।
Local Emulator Suite পরিবেশে একাধিক প্রকল্প আইডি সনাক্ত করলে সতর্কতা জারি করে, যদিও আপনি আপনার firebase.json এ singleProjectMode কীটিকে false এ সেট করে এই আচরণটি ওভাররাইড করতে পারেন।
আপনি প্রকল্প আইডি ঘোষণা(গুলি) এর অমিল পরীক্ষা করতে পারেন:
- কমান্ড লাইনে ডিফল্ট প্রজেক্ট। ডিফল্টরূপে, প্রজেক্ট আইডিটি স্টার্টআপের সময়
firebase initঅথবাfirebase useদিয়ে নির্বাচিত প্রজেক্ট থেকে নেওয়া হবে। প্রজেক্টের তালিকা দেখতে (এবং কোনটি নির্বাচিত হয়েছে তা দেখতে)firebase projects:listব্যবহার করুন। - রুলস ইউনিট টেস্ট। প্রজেক্ট আইডি প্রায়শই রুলস ইউনিট টেস্টিং লাইব্রেরি মেথড
initializeTestEnvironmentঅথবাinitializeTestAppকলের সময় নির্দিষ্ট করা হয়। - কমান্ড লাইন
--projectফ্ল্যাগ। Firebase CLI--projectফ্ল্যাগ পাস করলে ডিফল্ট প্রজেক্ট ওভাররাইড হয়ে যায়। ইউনিট পরীক্ষা এবং অ্যাপ ইনিশিয়ালাইজেশনে আপনাকে নিশ্চিত করতে হবে যে ফ্ল্যাগের মানটি প্রজেক্ট আইডির সাথে মেলে।
আপনার অ্যাপল প্ল্যাটফর্ম , অ্যান্ড্রয়েড এবং ওয়েব প্রকল্পগুলি কনফিগার করার সময় আপনার সেট করা প্ল্যাটফর্ম-নির্দিষ্ট প্রকল্প আইডি কনফিগারেশনগুলিও পরীক্ষা করে দেখুন।
নিরাপত্তা নিয়ম কনফিগারেশন
এমুলেটরগুলি firebase.json এর database , firestore এবং storage কনফিগারেশন কী থেকে নিরাপত্তা নিয়ম কনফিগারেশন নেবে।
{
// 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 ফ্ল্যাগের সাথে কাস্টমাইজ করা যেতে পারে।
উদাহরণস্বরূপ, যদি আপনি জাভা হিপ স্পেস সম্পর্কিত ত্রুটির সম্মুখীন হন, তাহলে আপনি সর্বোচ্চ জাভা হিপ আকার 4GB পর্যন্ত বাড়িয়ে দিতে পারেন:
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 পদ্ধতিটি সাধারণত ক্রমাগত ইন্টিগ্রেশন ওয়ার্কফ্লোর জন্য বেশি উপযুক্ত।
এমুলেটর ডেটা রপ্তানি এবং আমদানি করুন
আপনি Firebase এমুলেটরগুলির জন্য Authentication , Cloud Firestore , Realtime Database এবং Cloud Storage for Firebase থেকে ডেটা রপ্তানি করতে পারেন যাতে এটি একটি শেয়ারযোগ্য, সাধারণ বেসলাইন ডেটা সেট হিসেবে ব্যবহার করা যায়। এই ডেটা সেটগুলি উপরে বর্ণিত --import পতাকা ব্যবহার করে আমদানি করা যেতে পারে।
| এমুলেটর: এক্সপোর্ট export_directory | Cloud Storage for Firebase Authentication , Cloud Firestore , Realtime Database অথবা ক্লাউড স্টোরেজ । একটি চলমান 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" যোগ করতে পারেন।
এমুলেটর হাব 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 Firestore এমুলেটরের সমস্ত ডেটা মুছে ফেলতে চাইতে পারেন, Cloud Functions বা Extensions এমুলেটরগুলিতে চলমান কোনও onDelete ফাংশন ট্রিগার না করেই।
স্থানীয় ফাংশন ট্রিগারগুলি অস্থায়ীভাবে অক্ষম করতে, এমুলেটর হাবের /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 ইন্টিগ্রেশন
এই বিভাগের টেবিলগুলি নির্দেশ করে যে কোন এমুলেটরগুলি ক্লায়েন্ট এবং অ্যাডমিন SDK দ্বারা সমর্থিত। ভবিষ্যতের অর্থ হল এমুলেটর সমর্থন পরিকল্পনা করা হয়েছে কিন্তু এখনও উপলব্ধ নয়।
ক্লায়েন্ট SDK এর প্রাপ্যতা
| অ্যান্ড্রয়েড | অ্যাপল প্ল্যাটফর্মগুলি | ওয়েব | ফায়ারবেস UI অ্যান্ড্রয়েড | ফায়ারবেস UI আইওএস | ফায়ারবেস UI ওয়েব | |
|---|---|---|---|---|---|---|
| Realtime Database | ১৯.৪.০ | ৭.২.০ | ৮.০.০ | ৬.৪.০ | ভবিষ্যৎ | নিষিদ্ধ |
| Cloud Firestore | ২১.৬.০ | ৭.২.০ | ৮.০.০ | ৬.৪.০ | ভবিষ্যৎ | নিষিদ্ধ |
| Authentication | ২০.০.০ | ৭.০.০ | ৮.০.০ | ৭.০.০ | ভবিষ্যৎ | ৪.৭.২ |
| Cloud Storage for Firebase | ২০.০.০ | ৮.০.০ | ৮.৪.০ | ৭.০.০ | ১১.০.০ | নিষিদ্ধ |
| Cloud Functions | ১৯.১.০ | ৭.২.০ | ৮.০.০ | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ |
| Hosting | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ |
| Extensions | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ |
অ্যাডমিন SDK এর উপলব্ধতা
| নোড | জাভা | পাইথন | যাও | |
|---|---|---|---|---|
| Realtime Database | ৮.৬.০ | ৬.১০.০ | ২.১৮.০ | ভবিষ্যৎ |
| Cloud Firestore | ৮.০.০ | ৬.১০.০ | ৩.০.০ | ১.০.০ |
| Authentication | ৯.৩.০ | ৭.২.০ | ৫.০.০ | ৪.২.০ |
| Cloud Storage for Firebase | ৯.৮.০ | ভবিষ্যৎ | ভবিষ্যৎ | ভবিষ্যৎ |
| Cloud Functions | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ |
| Hosting | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ |
| Extensions | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ | নিষিদ্ধ |