ফায়ারবেস লোকাল এমুলেটর স্যুট বিভিন্ন প্রোটোটাইপ এবং পরীক্ষার পরিবেশের জন্য ইনস্টল এবং কনফিগার করা যেতে পারে, এক-অফ প্রোটোটাইপিং সেশন থেকে শুরু করে উত্পাদন-স্কেল ক্রমাগত ইন্টিগ্রেশন ওয়ার্কফ্লো পর্যন্ত।
স্থানীয় এমুলেটর স্যুট ইনস্টল করুন
এমুলেটর স্যুট ইনস্টল করার আগে আপনার প্রয়োজন হবে:
এমুলেটর স্যুট ইনস্টল করতে:
- 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
সম্পাদনা করে নিরাপত্তা নিয়মের সংজ্ঞার পথ পরিবর্তন করুন।
আপনি যদি এই সেটিংসগুলি কনফিগার না করেন, তাহলে এমুলেটরগুলি তাদের ডিফল্ট পোর্টে শুনবে এবং Firebase এমুলেটরগুলির জন্য Cloud Firestore , Realtime Database এবং Cloud Storage for Firebase খোলা ডেটা নিরাপত্তার সাথে চলবে৷
আদেশ | বর্ণনা |
---|---|
init এমুলেটর | একটি এমুলেটর ইনিশিয়ালাইজেশন উইজার্ড শুরু করুন। ইনস্টল করা ইমুলেটর সনাক্ত করুন এবং ঐচ্ছিকভাবে এমুলেটর পোর্ট সেটিংস নির্দিষ্ট করুন। init emulators অ-ধ্বংসাত্মক; ডিফল্ট গ্রহণ করা বর্তমান এমুলেটর কনফিগারেশন সংরক্ষণ করবে। |
পোর্ট কনফিগারেশন
প্রতিটি এমুলেটর একটি পছন্দের ডিফল্ট মান সহ আপনার মেশিনে একটি ভিন্ন পোর্টে আবদ্ধ হয়।
এমুলেটর | ডিফল্ট পোর্ট |
---|---|
Authentication | 9099 |
Emulator Suite UI | 4000 |
Cloud Functions | 5001 |
ইভেন্টর্ক | 9299 |
Realtime Database | 9000 |
Cloud Firestore | 8080 |
Cloud Storage for Firebase | 9199 |
Firebase Hosting | 5000 |
Pub/Sub | 8085 |
প্রকল্প আইডি কনফিগারেশন
আপনি কীভাবে এমুলেটরগুলি ব্যবহার করেন তার উপর নির্ভর করে, আপনি বিভিন্ন ফায়ারবেস প্রকল্প আইডি ব্যবহার করে একটি এমুলেটরের একাধিক দৃষ্টান্ত বা প্রদত্ত প্রকল্প আইডির জন্য একাধিক এমুলেটর দৃষ্টান্ত চালাতে পারেন। এই ধরনের ক্ষেত্রে, এমুলেটর দৃষ্টান্তগুলি একটি পৃথক পরিবেশে চলছে।
সব এমুলেটর আহ্বানের জন্য একটি প্রজেক্ট আইডি সেট করা সাধারণত একটি ভাল অভ্যাস, তাই 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
কনফিগারেশন কী থেকে নিরাপত্তা নিয়ম কনফিগারেশন নেবে।
{
// 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/ এ ডাউনলোড করবে যদি সেগুলি ইতিমধ্যে ইনস্টল না থাকে।
| ||||||||||||
এমুলেটর: exec scriptpath | firebase.json এ কনফিগার করা ফায়ারবেস পণ্যগুলির জন্য এমুলেটরগুলি শুরু করার পরে scriptpath স্ক্রিপ্টটি চালান। স্ক্রিপ্ট চালানো শেষ হলে এমুলেটর প্রক্রিয়াগুলি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।
|
firebase emulators:exec
পদ্ধতিটি সাধারনত ক্রমাগত ইন্টিগ্রেশন ওয়ার্কফ্লোগুলির জন্য আরও উপযুক্ত।
এমুলেটর ডেটা রপ্তানি এবং আমদানি করুন
আপনি শেয়ারযোগ্য, সাধারণ বেসলাইন ডেটা সেট হিসাবে ব্যবহার করার জন্য Cloud Storage for Firebase Authentication , Cloud Firestore , Realtime Database এবং ক্লাউড স্টোরেজ থেকে ডেটা রপ্তানি করতে পারেন। এই ডেটা সেটগুলি উপরে বর্ণিত হিসাবে --import
পতাকা ব্যবহার করে আমদানি করা যেতে পারে।
এমুলেটর: এক্সপোর্ট export_directory | Authentication , Cloud Firestore , Realtime Database বা Cloud Storage for Firebase । একটি চলমান Cloud Firestore , Realtime Database বা Cloud Storage for Firebase থেকে ডেটা রপ্তানি করুন। নির্দিষ্ট উপরে বর্ণিত |
আপনার সিআই সিস্টেমের সাথে একীভূত করুন
কনটেইনারাইজড এমুলেটর স্যুট ছবি চলছে
একটি সাধারণ 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 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 ইন্টিগ্রেশন
এই বিভাগের টেবিলগুলি নির্দেশ করে যে কোন এমুলেটরগুলি ক্লায়েন্ট এবং অ্যাডমিন SDK দ্বারা সমর্থিত। ভবিষ্যত মানে এমুলেটর সমর্থন পরিকল্পনা করা হয়েছে কিন্তু এখনও উপলব্ধ নয়।
ক্লায়েন্ট SDK প্রাপ্যতা
অ্যান্ড্রয়েড | অ্যাপল প্ল্যাটফর্ম | ওয়েব | ফায়ারবেস UI অ্যান্ড্রয়েড | ফায়ারবেস UI iOS | ফায়ারবেস UI ওয়েব | |
---|---|---|---|---|---|---|
Realtime Database | 19.4.0 | 7.2.0 | 8.0.0 | 6.4.0 | ভবিষ্যৎ | N/A |
Cloud Firestore | 21.6.0 | 7.2.0 | 8.0.0 | 6.4.0 | ভবিষ্যৎ | N/A |
Authentication | 20.0.0 | 7.0.0 | 8.0.0 | 7.0.0 | ভবিষ্যৎ | 4.7.2 |
Cloud Storage for Firebase | 20.0.0 | 8.0.0 | 8.4.0 | 7.0.0 | 11.0.0 | N/A |
Cloud Functions | 19.1.0 | 7.2.0 | 8.0.0 | N/A | N/A | N/A |
Hosting | N/A | N/A | N/A | N/A | N/A | N/A |
Extensions | N/A | N/A | N/A | N/A | N/A | N/A |
অ্যাডমিন SDK উপলব্ধতা
নোড | জাভা | পাইথন | যাও | |
---|---|---|---|---|
Realtime Database | 8.6.0 | 6.10.0 | 2.18.0 | ভবিষ্যৎ |
Cloud Firestore | 8.0.0 | 6.10.0 | 3.0.0 | 1.0.0 |
Authentication | 9.3.0 | 7.2.0 | 5.0.0 | 4.2.0 |
Cloud Storage for Firebase | 9.8.0 | ভবিষ্যৎ | ভবিষ্যৎ | ভবিষ্যৎ |
Cloud Functions | N/A | N/A | N/A | N/A |
Hosting | N/A | N/A | N/A | N/A |
Extensions | N/A | N/A | N/A | N/A |