স্থানীয় এমুলেটর স্যুট ইনস্টল, কনফিগার এবং সংহত করুন

ফায়ারবেস লোকাল এমুলেটর স্যুট বিভিন্ন প্রোটোটাইপ এবং পরীক্ষার পরিবেশের জন্য ইনস্টল এবং কনফিগার করা যেতে পারে, এক-অফ প্রোটোটাইপিং সেশন থেকে শুরু করে উত্পাদন-স্কেল ক্রমাগত ইন্টিগ্রেশন ওয়ার্কফ্লো পর্যন্ত।

স্থানীয় এমুলেটর স্যুট ইনস্টল করুন

এমুলেটর স্যুট ইনস্টল করার আগে আপনার প্রয়োজন হবে:

  • Node.js সংস্করণ 8.0 বা উচ্চতর।
  • Java JDK সংস্করণ 11 বা উচ্চতর।

এমুলেটর স্যুট ইনস্টল করতে:

  1. Firebase CLI ইনস্টল করুন। আপনার যদি আগে থেকেই Firebase CLI ইনস্টল না থাকে, তাহলে এখনই ইনস্টল করুন । এমুলেটর স্যুট ব্যবহার করার জন্য আপনার CLI সংস্করণ 8.14.0 বা উচ্চতর প্রয়োজন হবে। আপনি নিম্নলিখিত কমান্ড ব্যবহার করে কোন সংস্করণ ইনস্টল করেছেন তা পরীক্ষা করতে পারেন:
    firebase --version
  2. আপনি যদি ইতিমধ্যে এটি না করে থাকেন, তাহলে কোন পণ্য ব্যবহার করতে হবে তা নির্দিষ্ট করার জন্য অনস্ক্রিন প্রম্পট অনুসরণ করে একটি ফায়ারবেস প্রকল্প হিসাবে বর্তমান কার্যকারী ডিরেক্টরি শুরু করুন:
    firebase init
  3. এমুলেটর স্যুট সেট আপ করুন। এই কমান্ডটি একটি কনফিগারেশন উইজার্ড শুরু করে যা আপনাকে আগ্রহের এমুলেটর নির্বাচন করতে, সংশ্লিষ্ট এমুলেটর বাইনারি ফাইলগুলি ডাউনলোড করতে এবং ডিফল্টগুলি উপযুক্ত না হলে এমুলেটর পোর্ট সেট করতে দেয়।
    firebase init emulators

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

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

আপনি ঐচ্ছিকভাবে এমুলেটরদের নেটওয়ার্ক পোর্ট কনফিগার করতে পারেন এবং firebase.json ফাইলে নিরাপত্তা নিয়মের সংজ্ঞার পথ দেখতে পারেন:

  • firebase init emulators চালানোর মাধ্যমে অথবা ম্যানুয়ালি firebase.json সম্পাদনা করে এমুলেটর পোর্ট পরিবর্তন করুন।
  • ম্যানুয়ালি firebase.json সম্পাদনা করে নিরাপত্তা নিয়মের সংজ্ঞার পথ পরিবর্তন করুন।

আপনি যদি এই সেটিংসগুলি কনফিগার না করেন, তাহলে এমুলেটরগুলি তাদের ডিফল্ট পোর্টে শুনবে এবং ক্লাউড ফায়ারস্টোর, রিয়েলটাইম ডেটাবেস এবং ক্লাউড স্টোরেজ এমুলেটরগুলি ওপেন ডেটা নিরাপত্তার সাথে চলবে৷

আদেশ বর্ণনা
init এমুলেটর একটি এমুলেটর ইনিশিয়ালাইজেশন উইজার্ড শুরু করুন। ইনস্টল করা ইমুলেটর সনাক্ত করুন এবং ঐচ্ছিকভাবে এমুলেটর পোর্ট সেটিংস নির্দিষ্ট করুন। init emulators অ-ধ্বংসাত্মক; ডিফল্ট গ্রহণ করা বর্তমান এমুলেটর কনফিগারেশন সংরক্ষণ করবে।

পোর্ট কনফিগারেশন

প্রতিটি এমুলেটর একটি পছন্দের ডিফল্ট মান সহ আপনার মেশিনে একটি ভিন্ন পোর্টে আবদ্ধ হয়।

এমুলেটর ডিফল্ট পোর্ট
প্রমাণীকরণ 9099
এমুলেটর স্যুট UI 4000
ক্লাউড ফাংশন 5001
রিয়েলটাইম ডাটাবেস 9000
ক্লাউড ফায়ারস্টোর 8080
মেঘ স্টোরেজ 9199
ফায়ারবেস হোস্টিং 5000
পাব/সাব 8085

নিরাপত্তা নিয়ম কনফিগারেশন

firebase.jsondatabase , 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": {
    "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"
    }
  }
}

জাভা বিকল্পগুলি নির্দিষ্ট করা

রিয়েলটাইম ডেটাবেস এমুলেটর, ক্লাউড ফায়ারস্টোর এমুলেটর, এবং ক্লাউড স্টোরেজ এমুলেটরের অংশ জাভা ভিত্তিক, যা পরিবেশ পরিবর্তনশীল JAVA_TOOL_OPTIONS এর মাধ্যমে JVM পতাকাগুলির সাথে কাস্টমাইজ করা যেতে পারে।

উদাহরণস্বরূপ, আপনি যদি জাভা হিপ স্পেস সম্পর্কিত ত্রুটিগুলি অনুভব করেন, আপনি সর্বোচ্চ জাভা হিপের আকার 4GB পর্যন্ত বাড়িয়ে দিতে পারেন:

export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start

JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g" মতো স্পেস দ্বারা পৃথক করা উদ্ধৃতিতে একাধিক পতাকা নির্দিষ্ট করা যেতে পারে। ফ্ল্যাগগুলি শুধুমাত্র এমুলেটরগুলির জাভা-ভিত্তিক উপাদানগুলিকে প্রভাবিত করে এবং ফায়ারবেস CLI-এর অন্যান্য অংশগুলিতে যেমন এমুলেটর স্যুট UI এর উপর কোন প্রভাব নেই৷

এমুলেটর শুরু করুন

আপনি ম্যানুয়ালি বন্ধ না হওয়া পর্যন্ত চালানোর জন্য এমুলেটরগুলি শুরু করতে পারেন, বা একটি মনোনীত পরীক্ষার স্ক্রিপ্টের সময়কালের জন্য চালানোর জন্য তারপর স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যেতে পারেন।

আদেশ বর্ণনা
এমুলেটর: শুরু firebase.json এ কনফিগার করা Firebase পণ্যগুলির জন্য এমুলেটর শুরু করুন। স্পষ্টভাবে বন্ধ না হওয়া পর্যন্ত এমুলেটর প্রক্রিয়া চলতে থাকবে। কলিং emulators:start ইমুলেটরগুলিকে ~/.cache/firebase/emulators/ এ ডাউনলোড করবে যদি সেগুলি ইতিমধ্যে ইনস্টল না থাকে।
পতাকা বর্ণনা
--only ঐচ্ছিক। কোন এমুলেটর শুরু হয় তা সীমিত করুন। এমুলেটর নামের একটি কমা-বিচ্ছিন্ন তালিকা সরবরাহ করুন, এক বা একাধিক 'auth', 'ডাটাবেস', 'ফায়ারস্টোর', 'ফাংশন', 'হোস্টিং', বা 'পাবসাব' উল্লেখ করে।
--inspect-functions debug_port ঐচ্ছিক। নির্দিষ্ট পোর্টে ফাংশনগুলির ব্রেকপয়েন্ট ডিবাগিং সক্ষম করতে ক্লাউড ফাংশন এমুলেটর ব্যবহার করুন (অথবা যুক্তি বাদ দিলে ডিফল্ট পোর্ট 9229)। মনে রাখবেন যে যখন এই পতাকা সরবরাহ করা হয়, ক্লাউড ফাংশন এমুলেটর একটি বিশেষ ক্রমিক এক্সিকিউশন মোডে স্যুইচ করে যেখানে ফাংশনগুলি একটি একক প্রক্রিয়ায়, অনুক্রমিক (FIFO) ক্রমে কার্যকর করা হয়; এটি ফাংশন ডিবাগিংকে সহজ করে, যদিও আচরণটি মাল্টি-প্রসেস, ক্লাউডে ফাংশনগুলির সমান্তরাল সঞ্চালন থেকে আলাদা।
--export-on-exit= ঐচ্ছিক। প্রমাণীকরণ, ক্লাউড ফায়ারস্টোর, রিয়েলটাইম ডেটাবেস বা ক্লাউড স্টোরেজ এমুলেটর ব্যবহার করুন। শাটডাউন ঘটলে এমুলেটরকে ডাটা রপ্তানি করতে নির্দেশ দিন, যেমন emulators:export কমান্ডের জন্য বর্ণনা করা হয়েছে। এক্সপোর্ট ডিরেক্টরিটি এই পতাকা দিয়ে নির্দিষ্ট করা যেতে পারে: firebase emulators:start --export-on-exit=./saved-data । যদি --import ব্যবহার করা হয়, রপ্তানি পথ ডিফল্ট একই হয়; যেমন: firebase emulators:start --import=./data-path --export-on-exit । শেষ অবধি, যদি ইচ্ছা হয়, --import এবং --export-on-exit ফ্ল্যাগে বিভিন্ন ডিরেক্টরি পাথ পাস করুন।
--import= import_directory ঐচ্ছিক। প্রমাণীকরণ, ক্লাউড ফায়ারস্টোর, রিয়েলটাইম ডেটাবেস বা ক্লাউড স্টোরেজ এমুলেটর ব্যবহার করুন। --export-on-exit স্টার্টআপ বিকল্প বা emulators:export কমান্ড। বর্তমানে এমুলেটর মেমরিতে থাকা যেকোনো ডেটা ওভারওয়াইট করা হবে।
এমুলেটর: exec scriptpath scriptpath এ কনফিগার করা firebase.json পণ্যগুলির জন্য এমুলেটরগুলি শুরু করার পরে স্ক্রিপ্টপাথে স্ক্রিপ্টটি চালান। স্ক্রিপ্ট চালানো শেষ হলে এমুলেটর প্রক্রিয়াগুলি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।
পতাকা বর্ণনা
--only ঐচ্ছিক। কোন এমুলেটর শুরু হয় তা সীমিত করুন। এক বা একাধিক 'ফায়ারস্টোর', 'ডাটাবেস', 'ফাংশন', 'হোস্টিং', বা 'পাবসাব' উল্লেখ করে এমুলেটর নামের একটি কমা-বিচ্ছিন্ন তালিকা সরবরাহ করুন।
--inspect-functions debug_port ঐচ্ছিক। নির্দিষ্ট পোর্টে ফাংশনগুলির ব্রেকপয়েন্ট ডিবাগিং সক্ষম করতে ক্লাউড ফাংশন এমুলেটর ব্যবহার করুন (অথবা যুক্তি বাদ দিলে ডিফল্ট পোর্ট 9229)। মনে রাখবেন যে যখন এই পতাকা সরবরাহ করা হয়, ক্লাউড ফাংশন এমুলেটর একটি বিশেষ ক্রমিক এক্সিকিউশন মোডে স্যুইচ করে যেখানে ফাংশনগুলি একটি একক প্রক্রিয়ায়, অনুক্রমিক (FIFO) ক্রমে কার্যকর করা হয়; এটি ফাংশন ডিবাগিংকে সহজ করে, যদিও আচরণটি মাল্টি-প্রসেস, ক্লাউডে ফাংশনগুলির সমান্তরাল সঞ্চালন থেকে আলাদা।
--export-on-exit= ঐচ্ছিক। প্রমাণীকরণ, ক্লাউড ফায়ারস্টোর, রিয়েলটাইম ডেটাবেস বা ক্লাউড স্টোরেজ এমুলেটর ব্যবহার করুন। শাটডাউন ঘটলে এমুলেটরকে ডাটা রপ্তানি করতে নির্দেশ দিন, যেমন emulators:export কমান্ডের জন্য বর্ণনা করা হয়েছে। এক্সপোর্ট ডিরেক্টরিটি এই পতাকা দিয়ে নির্দিষ্ট করা যেতে পারে: firebase emulators:start --export-on-exit=./saved-data । যদি --import ব্যবহার করা হয়, রপ্তানি পথ ডিফল্ট একই হয়; যেমন: firebase emulators:start --import=./data-path --export-on-exit । শেষ অবধি, যদি ইচ্ছা হয়, --import এবং --export-on-exit ফ্ল্যাগে বিভিন্ন ডিরেক্টরি পাথ পাস করুন।
--import= import_directory ঐচ্ছিক। প্রমাণীকরণ, ক্লাউড ফায়ারস্টোর, রিয়েলটাইম ডেটাবেস বা ক্লাউড স্টোরেজ এমুলেটর ব্যবহার করুন। --export-on-exit স্টার্টআপ বিকল্প বা emulators:export কমান্ড। বর্তমানে এমুলেটর মেমরিতে থাকা যেকোনো ডেটা ওভাররাইট করা হবে।
--ui ঐচ্ছিক। সম্পাদনের সময় এমুলেটর UI চালান।

firebase emulators:exec পদ্ধতিটি সাধারনত ক্রমাগত ইন্টিগ্রেশন ওয়ার্কফ্লোগুলির জন্য আরও উপযুক্ত।

এমুলেটর ডেটা রপ্তানি এবং আমদানি করুন

আপনি একটি শেয়ারযোগ্য, সাধারণ বেসলাইন ডেটা সেট হিসাবে ব্যবহার করার জন্য প্রমাণীকরণ, ক্লাউড ফায়ারস্টোর, রিয়েলটাইম ডেটাবেস এবং ক্লাউড স্টোরেজ এমুলেটর থেকে ডেটা রপ্তানি করতে পারেন। এই ডেটা সেটগুলি উপরে বর্ণিত হিসাবে --import পতাকা ব্যবহার করে আমদানি করা যেতে পারে।

এমুলেটর: এক্সপোর্ট export_directory

প্রমাণীকরণ, ক্লাউড ফায়ারস্টোর, রিয়েলটাইম ডেটাবেস বা ক্লাউড স্টোরেজ এমুলেটর । চলমান ক্লাউড ফায়ারস্টোর, রিয়েলটাইম ডেটাবেস বা ক্লাউড স্টোরেজ এমুলেটর উদাহরণ থেকে ডেটা রপ্তানি করুন। নির্দিষ্ট export_directory তৈরি করা হবে যদি এটি ইতিমধ্যে বিদ্যমান না থাকে। যদি নির্দিষ্ট ডিরেক্টরি বিদ্যমান থাকে, তাহলে আপনাকে নিশ্চিত করতে বলা হবে যে পূর্ববর্তী রপ্তানি ডেটা ওভাররাইট করা উচিত। আপনি --force পতাকা ব্যবহার করে এই প্রম্পটটি এড়িয়ে যেতে পারেন। এক্সপোর্ট ডিরেক্টরিতে একটি ডেটা ম্যানিফেস্ট ফাইল রয়েছে, firebase-export-metadata.json

উপরে বর্ণিত --export-on-exit ফ্ল্যাগগুলি ব্যবহার করে আপনি এমুলেটরদের স্বয়ংক্রিয়ভাবে ডেটা রপ্তানি করার নির্দেশ দিতে পারেন যখন তারা বন্ধ করে দেয়।

আপনার সিআই সিস্টেমের সাথে একীভূত করুন

কনটেইনারাইজড এমুলেটর স্যুট ছবি চলছে

একটি সাধারণ CI সেটআপে কন্টেইনার সহ এমুলেটর স্যুটের ইনস্টলেশন এবং কনফিগারেশন সহজবোধ্য।

উল্লেখ্য কয়েকটি সমস্যা আছে:

  • JAR ফাইল ~/.cache/firebase/emulators/ এ ইনস্টল এবং ক্যাশে করা হয়।

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

একটি প্রমাণীকরণ টোকেন তৈরি করুন (শুধু হোস্টিং এমুলেটর)

যদি আপনার ক্রমাগত ইন্টিগ্রেশন ওয়ার্কফ্লোগুলি Firebase হোস্টিং-এর উপর নির্ভর করে, তাহলে Firebase firebase emulators:exec চালানোর জন্য আপনাকে একটি টোকেন ব্যবহার করে লগইন করতে হবে। অন্যান্য এমুলেটরগুলির লগইন প্রয়োজন হয় না।

একটি টোকেন তৈরি করতে, আপনার স্থানীয় পরিবেশে firebase login:ci চালান; এটি একটি CI সিস্টেম থেকে সঞ্চালিত করা উচিত নয়। প্রমাণীকরণ নির্দেশাবলী অনুসরণ করুন. প্রতি প্রোজেক্টে আপনাকে একবার এই ধাপটি সম্পাদন করতে হবে, যেহেতু টোকেনটি বিল্ড জুড়ে বৈধ হবে। টোকেনটিকে একটি পাসওয়ার্ডের মতো বিবেচনা করা উচিত; এটা গোপন রাখা হয় তা নিশ্চিত করুন।

যদি আপনার CI এনভায়রনমেন্ট আপনাকে এনভায়রনমেন্ট ভেরিয়েবল নির্দিষ্ট করতে দেয় যা বিল্ড স্ক্রিপ্টে ব্যবহার করা যেতে পারে, তাহলে FIREBASE_TOKEN নামে একটি এনভায়রনমেন্ট ভেরিয়েবল তৈরি করুন, যার মানটি হল অ্যাক্সেস টোকেন স্ট্রিং। Firebase CLI স্বয়ংক্রিয়ভাবে FIREBASE_TOKEN এনভায়রনমেন্ট ভেরিয়েবল বাছাই করবে এবং এমুলেটরগুলি সঠিকভাবে শুরু হবে।

একটি শেষ অবলম্বন হিসাবে, আপনি কেবল আপনার বিল্ড স্ক্রিপ্টে টোকেন অন্তর্ভুক্ত করতে পারেন, তবে নিশ্চিত করুন যে অবিশ্বস্ত দলগুলির অ্যাক্সেস নেই৷ এই হার্ড-কোডেড পদ্ধতির জন্য, আপনি Firebase 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
  }
}

ব্যাকগ্রাউন্ড ফাংশন ট্রিগার সক্রিয়/অক্ষম করুন

কিছু পরিস্থিতিতে আপনাকে অস্থায়ীভাবে স্থানীয় ফাংশন এবং এক্সটেনশন ট্রিগার অক্ষম করতে হবে। উদাহরণস্বরূপ, আপনি ক্লাউড ফাংশন বা এক্সটেনশন এমুলেটরগুলিতে চলমান কোনো 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
iOS
ফায়ারবেস UI
ওয়েব
রিয়েলটাইম ডাটাবেস 19.4.0 7.2.0 ৮.০.০ 6.4.0 ভবিষ্যৎ N/A
ক্লাউড ফায়ারস্টোর 21.6.0 7.2.0 ৮.০.০ 6.4.0 ভবিষ্যৎ N/A
প্রমাণীকরণ 20.0.0 7.0.0 ৮.০.০ 7.0.0 ভবিষ্যৎ ভবিষ্যৎ
মেঘ স্টোরেজ 20.0.0 ৮.০.০ 8.4.0 N/A N/A N/A
ক্লাউড ফাংশন 19.1.0 7.2.0 ৮.০.০ N/A N/A N/A
হোস্টিং N/A N/A N/A N/A N/A N/A
এক্সটেনশন N/A N/A N/A N/A N/A N/A

অ্যাডমিন SDK উপলব্ধতা

নোড জাভা পাইথন যাওয়া
রিয়েলটাইম ডাটাবেস ৮.৬.০ 6.10.0 2.18.0 ভবিষ্যৎ
ক্লাউড ফায়ারস্টোর ৮.০.০ 6.10.0 3.0.0 1.0.0
প্রমাণীকরণ 9.3.0 7.2.0 5.0.0 4.2.0
মেঘ স্টোরেজ 9.8.0 ভবিষ্যৎ ভবিষ্যৎ ভবিষ্যৎ
ক্লাউড ফাংশন N/A N/A N/A N/A
হোস্টিং N/A N/A N/A N/A
এক্সটেনশন N/A N/A N/A N/A