App Hosting এমুলেটর ব্যবহার করে App Hosting ডেপ্লয় করার আগে আপনি অ্যাপের লোকাল টেস্ট করতে পারবেন, যা Firebase লোকাল ইমুলেটর সুইটের অংশ।
App Hosting এমুলেটর ব্যবহার করার আগে, আপনি সামগ্রিক Firebase Local Emulator Suite ওয়ার্কফ্লো বুঝতে পেরেছেন কিনা এবং Local Emulator Suite ইনস্টল ও কনফিগার করেছেন কিনা এবং এর CLI কমান্ড পর্যালোচনা করেছেন কিনা তা নিশ্চিত করুন।
এই বিষয় থেকে ধরে নেওয়া হয় যে আপনি আগে থেকেই App Hosting সম্পর্কে জানেন। প্রয়োজন হলে, App Hosting-এর ভূমিকা ও অন্যান্য মেটেরিয়াল পর্যালোচনা করুন যাতে App Hosting কীভাবে কাজ করে তা বুঝতে পারেন।
App Hosting এমুলেটর দিয়ে আমি কী করতে পারি?
App Hosting এমুলেটর আপনাকে স্থানীয়ভাবে আপনার ওয়েব অ্যাপ্লিকেশন পরীক্ষা এবং পরিমার্জন করতে দেয়। এটি আপনার ডেভেলপমেন্ট প্রসেসকে স্ট্রিমলাইন করতে পারে এবং Firebase ব্যবহার করে তৈরি করা এবং App Hosting-এ ডিপ্লয় করা ওয়েব অ্যাপের কোয়ালিটি উন্নত করতে পারে।
App Hosting ইমুলেটর:
apphosting.yamlকনফিগারেশন ফাইলে এনভায়রনমেন্ট ভেরিয়েবেল ও সিক্রেট সংজ্ঞায়িত করে, আপনাকে লোকালি ওয়েব অ্যাপ রান করতে দেয়।apphosting.emulator.yamlফাইলের মাধ্যমে এমুলেটরে ব্যবহারের জন্য এনভায়রনমেন্ট ভেরিয়েবল ও সিক্রেট ওভাররাইড করতে পারে।- অন্যান্য Firebase এমুলেটরের সাথে ব্যবহার করা যেতে পারে। আপনি যদি Firestore, Auth বা অন্য কোনও এমুলেটর ব্যবহার করেন, তাহলে Local Emulator Suite নিশ্চিত করে যে এই এমুলেটরগুলি App Hosting এমুলেটরের আগে শুরু হয়েছে।
এমুলেটর কনফিগার করুন
শুরু করতে, Local Emulator Suite ইনস্টল ও ইনিশিয়ালাইজ করুন, যেমনটি লোকাল ইমুলেটর সুইট ইনস্টল, কনফিগার ও ইন্টিগ্রেট করুন
লিঙ্কে বর্ণনা করা হয়েছে। আপনি সেট-আপ করতে চান এমন অন্য যেকোনও Firebase এমুলেটর ছাড়াও,
App Hosting
Emulator বেছে নিতে ভুলবেন না। CLI আপনাকে কিছু App Hosting এমুলেটর ভ্যালুর জন্য প্রম্পট করে,
যার মধ্যে রয়েছে:
- প্রোজেক্টের সাথে সম্পর্কিত আপনার অ্যাপের রুট ডিরেক্টরি; আপনি App Hosting-এর সাথে মোনোরেপো ব্যবহার করলে এটি গুরুত্বপূর্ণ।
- আপনি লোকাল ডেভেলপমেন্টের জন্য কোনও ভ্যালু ওভাররাইড করতে চান কিনা।
- লোকাল ডেভেলপমেন্টের জন্য আপনি টিমমেটদের সিক্রেট অ্যাক্সেস করার অনুমতি দিতে চান কিনা।
firebase init emulators
=== Emulators Setup
? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ App Hosting Emulator
◯ Firestore Emulator
◯ Database Emulator
◯ Hosting Emulator
◯ Pub/Sub Emulator
◯ Storage Emulator
◯ Eventarc Emulator
(Move up and down to reveal more choices)
? Specify your app's root directory relative to your project (./)
? The App Hosting emulator uses a file called apphosting.emulator.yaml to
override values in apphosting.yaml for local testing. This codebase does not
have one, would you like to create it? (Y/n)
? Which environment variables would you like to override? (Press <space> to
select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ MEMCACHE_ADDR
◯ API_KEY
? What new value would you like for plaintext MEMCACHE_ADDR?
? What would you like to name the secret reference for API_KEY? (test-api-key)
? What new value would you like for secret TESTKEY [input is hidden]? [input is hidden]
? Your config has secret values. Please provide a comma-separated list of users
or groups who should have access to secrets for local development:
✔ Successfully set IAM bindings on secret test-api-key.
এই সেট-আপ ফ্লোতে আপনার দেওয়া যেকোনও ভ্যালু firebase.json-এ আপনার
App Hosting এমুলেটর কনফিগারেশন আপডেট করতে ব্যবহার করা হয়। এছাড়াও, আপনি
সরাসরি firebase.json আপডেট করে App Hosting এমুলেটর কনফিগার করতে পারবেন। App Hosting এমুলেটরের জন্য
স্কিমা হল:
{
...
"emulators": {
"apphosting": {
"startCommand": <command> [optional],
"rootDirectory": <path> [optional]
}
}
}
- এমুলেটর শুরু করার সময়
startCommandঅটোমেটিক জেনারেট ও সেট করা হয়। এটি না দেওয়া হলে, এমুলেটর আপনার প্যাকেজ ম্যানেজারের dev কমান্ড শনাক্ত করে রান করবে। rootDirectoryমোনোরেপো প্রোজেক্ট সেট-আপে সহায়তা করতে ব্যবহার করা হয়। আপনার ওয়েব অ্যাপ কোনও সাবডিরেক্টরিতে থাকলে, আপনাকে রুট (firebase.json-এর লোকেশন) অনুযায়ী সেই ডিরেক্টরির পাথ প্রদান করতে হবে।
এমুলেশন ম্যানেজ করুন
এমুলেটর ইনিশিয়ালাইজেশন আপনার অ্যাপের রুট ডিরেক্টরিতে একটি apphosting.emulator.yaml ফাইল তৈরি করে। এই কনফিগারেশন ফাইলের স্কিমা প্রোডাকশনে ব্যবহৃত
apphosting.yaml ফাইলের মতোই, তবে এটি শুধুমাত্র লোকাল ডেভেলপমেন্টের জন্য। সাধারণত, এমুলেটর আপনার apphosting.yaml ফাইল থেকে কনফিগারেশন পড়ে, তবে apphosting.emulator.yaml ফাইল থাকলে, সেই ফাইলের কনফিগারেশনকে
অগ্রাধিকার দেওয়া হয়।
apphosting.emulator.yaml ফাইলটি এমনভাবে ডিজাইন করা হয়েছে যাতে এটি নিরাপদে কমিট করা যায় এবং সহকর্মীদের সাথে শেয়ার করা যায়। আপনি যাতে ভুলবশত সোর্স রিপোজিটরিতে সংবেদনশীল ডেটা কমিট না করেন তা নিশ্চিত করতে,
apphosting.yaml-এ গোপনীয় যেকোনও এনভায়রনমেন্ট ভেরিয়েবল
apphosting.emulator.yaml-এও গোপনীয় হতে হবে। যদি কোনও
সিক্রেট প্রোডাকশন ও লোকাল ডেভেলপমেন্টের মধ্যে পরিবর্তন করার প্রয়োজন না হয় (যেমন, Gemini API key), তাহলে এটি apphosting.emulator.yaml-এ যোগ করার প্রয়োজন নেই;
পরিবর্তে আপনার টিমকে সিক্রেটের
অ্যাক্সেস দিন।
আপনার অ্যাপ্লিকেশন যদি অনেক সিক্রেট ব্যবহার করে (যেমন, তিনটি আলাদা পরিষেবার জন্য API কী,
যার প্রতিটির প্রোডাকশন, স্টেজিং এবং লোকাল ডেভেলপমেন্টের জন্য আলাদা ভ্যালু আছে)
তাহলে আপনি Cloud Secret Manager-এর ফ্রি টিয়ারের সীমা অতিক্রম করতে পারেন এবং প্রতি মাসে
প্রতিটি অতিরিক্ত সিক্রেটের জন্য $০.০৬ দিতে হতে পারে। এই ফি এড়াতে আপনি সোর্স কন্ট্রোলের বাইরে লোকাল কনফিগারেশন ম্যানেজ করতে চাইলে, পুরনো apphosting.local.yaml ফাইল ব্যবহার করতে পারেন। apphosting.emulator.yaml-এর মতো নয়, এই ফাইলটি
এনভায়রনমেন্ট ভেরিয়েবলের জন্য প্লেইনটেক্সট ভ্যালু প্রদান করার অনুমতি দেয় যা apphosting.yaml-এ
গোপনীয় ভ্যালু।
ব্যবহারকারী বা গ্রুপকে সিক্রেট অ্যাক্সেস করার অনুমতি দিন
এমুলেটর চালু হওয়ার সময় apphosting.emulator.yaml-এ স্টোর করা সিক্রেট পড়া
হয়। এর অর্থ হল, আপনার ডেভেলপমেন্ট টিমকে সিক্রেট অ্যাক্সেস করতে হবে। আপনি
apphosting:secrets:grantaccess কমান্ড ব্যবহার করে ইমেলের মাধ্যমে কোনও ব্যবহারকারী বা গ্রুপকে
গোপন ভ্যালু অ্যাক্সেস করার অনুমতি দিতে পারেন।
firebase apphosting:secrets:grantaccess test-api-key --emails my-team@my-company.com
যেখানে প্রযোজ্য, সেখানে apphosting.emulator.yaml-এ শুধুমাত্র টেস্ট-কী ব্যবহার করার কথা বিবেচনা করুন
যেগুলির প্রোডাকশন ডেটাতে অ্যাক্সেস নেই, বিশ্বব্যাপী পার্শ্বপ্রতিক্রিয়া থাকতে পারে না
(ইমেল পাঠানো, ক্রেডিট কার্ড চার্জ করা) বা কম কোটা আছে। এটি
নিশ্চিত করতে সাহায্য করে যে পর্যালোচনা না করা কোডের বাস্তব-জগতে কম প্রভাব পড়ে।
ব্যক্তিগত ব্যবহারকারীদের অ্যাক্সেস দেওয়ার পরিবর্তে, সিক্রেট অ্যাক্সেস ম্যানেজ করার জন্য Google Groups ব্যবহার করার কথা বিবেচনা করুন। এটি আপনার ডেভেলপার টিমে নতুন মেম্বারদের অনবোর্ডিং সহজ করবে কারণ তাদের গ্রুপে যোগ করলে তারা প্রয়োজনীয় সমস্ত সিক্রেট অ্যাক্সেস করতে পারবে। আপনার কাছে আগে থেকেই এমন একটি উপযুক্ত গ্রুপ থাকতে পারে যেখানে ডেভেলপাররা
একে অপরের সাথে যোগাযোগ করেন। Google Groups-এর মাধ্যমে অ্যাক্সেস কন্ট্রোল করলে, আপনার টিম ছেড়ে চলে যাওয়া ডেভেলপারদের ইমেল গ্রুপ থেকে সরিয়ে দেওয়ার পরে তারা যাতে কোনও সিক্রেট অ্যাক্সেস করতে না পারেন তা নিশ্চিত করা যায়। সিক্রেট যদি প্রোডাকশন ডেটা বা বাস্তব-জগতের সাইড এফেক্ট অ্যাক্সেস করতে পারে, তাহলে আপনার 'কী' রোটেট করা এবং firebase apphosting:secrets:set-এর মাধ্যমে এটিকে একটি নতুন ভ্যালু দেওয়া
এখনও উপযুক্ত হতে পারে।
ইমুলেটর রান করুন
firebase emulators:start
এটি App Hosting এমুলেটর সহ আপনার firebase.json ফাইলে উল্লেখ করা সব এমুলেটর চালু করবে।
Angular অ্যাপের জন্য start কমান্ড কনফিগার করা
এমুলেটর start কমান্ডের টাইম-আউট হলে, সম্ভবত Angular
ডেভেলপমেন্ট সার্ভার আপনার অ্যাপকে App Hosting এমুলেটরের প্রত্যাশিত পোর্ট থেকে
আলাদা পোর্টে পরিবেশন করছে।
আপনি firebase.json-এ কিছু অতিরিক্ত কনফিগারেশন যোগ করে এই সমস্যার সমাধান করতে পারেন:
emulators.apphosting.startCommand-কেng serve-এ সেট করুন।- ডিফল্ট নয় এমন পোর্ট ব্যবহার করতে,
emulators.apphosting.port-এর সাথে এটি সেট করুন (emulators.apphosting.startCommand-এng serve-এর সাথে--portফ্ল্যাগ যোগ করার পরিবর্তে)।
যেমন:
"emulators": {
"apphosting": {
"port": 5002,
"rootDirectory": "./test-app",
"startCommand": "ng serve"
},
"ui": {
"enabled": true
},
...
}