এক্সটেনশন ম্যানিফেস্ট হল এক্সটেনশন ইনস্ট্যান্স ও সেগুলির কনফিগারেশনের একটি তালিকা। ম্যানিফেস্টের মাধ্যমে আপনি এগুলি করতে পারবেন:
- অন্যদের সাথে আপনার এক্সটেনশন কনফিগারেশন শেয়ার করুন
- বিভিন্ন প্রোজেক্টের মধ্যে আপনার এক্সটেনশন কনফিগারেশন কপি করুন (যেমন, আপনার স্টেজিং প্রোজেক্ট থেকে আপনার প্রোডাকশন প্রোজেক্টে)
- আপনার সব এক্সটেনশন একবারে ডিপ্লয় করুন
- Firebase Local Emulator Suite ব্যবহার করে আপনার অ্যাপের সাথে এক্সটেনশন কীভাবে কাজ করে তা পরীক্ষা করুন
- সোর্স কন্ট্রোলে আপনার এক্সটেনশন কনফিগারেশন কমিট করুন
- আপনার CI/CD পাইপলাইনে এক্সটেনশন অন্তর্ভুক্ত করুন
এক্সটেনশন ম্যানিফেস্টের দুটি অংশ আছে:
আপনার
firebase.json-এরextensionsবিভাগ, যা এক্সটেনশন ভার্সন রেফারেন্সের জন্য ইনস্ট্যান্স আইডির ম্যাপ। যেমন:{ "extensions": { "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18", "my-image-resizer": "firebase/storage-resize-images@^0.1.22", } }আপনার Firebase প্রোজেক্ট ডিরেক্টরির
extensions/সাবডিরেক্টরিতে, আপনার প্রতিটি এক্সটেনশন ইনস্ট্যান্সের কনফিগারেশন সহ.envফাইল। যেমন,storage-resize-images-এর একটি ইনস্ট্যান্সে নিচে উল্লেখ করা ফাইলের মতো একটি.envফাইল থাকতে পারে:IMAGE_TYPE=jpeg LOCATION=us-central1 IMG_BUCKET=${param:PROJECT_ID}.firebasestorage.app IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
এক্সটেনশন ম্যানিফেস্ট তৈরি করুন
এক্সটেনশন ম্যানিফেস্ট তৈরি করার তিনটি উপায় আছে:
- Firebase CLI-এর মাধ্যমে আপনার এক্সটেনশন ম্যানিফেস্ট ম্যানেজ করুন
- প্রোজেক্টের এক্সটেনশন কনফিগারেশন এক্সপোর্ট করুন
- ম্যানিফেস্ট ফাইল ম্যানুয়ালি এডিট করুন
প্রথম দুটি পদ্ধতি নিচে ব্যাখ্যা করা হয়েছে।
Firebase CLI-এর মাধ্যমে আপনার এক্সটেনশন ম্যানিফেস্ট ম্যানেজ করুন
আপনি --local বিকল্পের সাহায্যে Firebase CLI-এর ext: কমান্ডের বেশিরভাগই চালাতে পারবেন
যাতে প্রোজেক্টের বর্তমান কনফিগারেশন পরিবর্তন না করেই এক্সটেনশন ম্যানিফেস্ট
আপডেট করা যায়।
যেমন:
firebase ext:install --local firebase/firestore-bigquery-export
উপরের কমান্ড রান করলে, আপনাকে firebase/firestore-bigquery-export এক্সটেনশনের লেটেস্ট ভার্সন কনফিগার করতে এবং ম্যানিফেস্টে কনফিগারেশন সেভ করতে প্রম্পট করা হবে, তবে এটি আপনার প্রোজেক্টে কনফিগারেশন ডিপ্লয় করবে না।
এক্সটেনশন ম্যানিফেস্ট পরিবর্তন করে এমন কমান্ডের আরও কিছু উদাহরণ এখানে দেওয়া হল:
# ext:configure changes the params for an extension instance in your extensions manifest
$ firebase ext:configure my-bigquery-extension --local
# ext:update --local updates an instance in your extensions manifest
# to the latest version of that extension
$ firebase ext:update my-bigquery-extension --local
# You can also specify a version if you don't want to update to the latest version
$ firebase ext:update my-bigquery-extension firebase/firestore-bigquery-export@0.1.10 --local
# ext:uninstall --local removes an instance from your extensions manifest
$ firebase ext:uninstall my-bigquery-extension --local
প্রোজেক্টের এক্সটেনশন কনফিগারেশন এক্সপোর্ট করুন
ম্যানিফেস্টে কোনও প্রোজেক্টের বর্তমান এক্সটেনশন কনফিগারেশন সেভ করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
- আপনি আগে থেকে এটি না করে থাকলে, Firebase CLI সেট-আপ করুন
- শেল প্রম্পট থেকে প্রোজেক্ট ডিরেক্টরিতে পরিবর্তন করুন। (আপনার প্রোজেক্ট
ডিরেক্টরিতে
firebase.jsonফাইলটি আছে)। ext:exportকমান্ড রান করুন:firebase ext:export
ext:export কমান্ডটি firebase.json
ফাইলে একটি extensions বিভাগ যোগ করবে। এছাড়াও, ext:export কমান্ডটি একটি extensions ডিরেক্টরি তৈরি করে
যার মধ্যে আপনার ইনস্টল করা প্রতিটি এক্সটেনশন ইনস্ট্যান্সের জন্য একটি .env ফাইল থাকে। এইসব
ফাইলে প্রতিটি ইনস্ট্যান্সের জন্য কনফিগারেশন প্যারামিটার থাকে।
Firebase Local Emulator Suite-এর মাধ্যমে এক্সটেনশন কনফিগারেশন পরীক্ষা করুন
আপনার এক্সটেনশন ম্যানিফেস্টে কিছু এক্সটেনশন ইনস্ট্যান্স যোগ করার পরে, আপনি Local Emulator Suite ব্যবহার করে সেগুলি পরীক্ষা করতে পারবেন।
Local Emulator Suite শুরু করুন:
- ইমুলেটর সুইট ইন্টার্যাক্টিভভাবে চালাতে, এটি চালান:
firebase emulators:start - ইমুলেটর সুইট চালাতে এবং টেস্ট স্ক্রিপ্ট এক্সিকিউট করতে, এটি চালান:
firebase emulators:exec my-test.sh
- ইমুলেটর সুইট ইন্টার্যাক্টিভভাবে চালাতে, এটি চালান:
এখন, আপনার ম্যানিফেস্টে এক্সটেনশন ইনস্ট্যান্স তালিকাভুক্ত থাকলে,
Local Emulator Suite সেইসব এক্সটেনশনের সোর্স কোড
~/.cache/firebase/extensions-এ ডাউনলোড করবে। ডাউনলোড করা হয়ে গেলে,
Local Emulator Suite শুরু হবে এবং আপনি যেকোনও
এক্সটেনশনের ব্যাকগ্রাউন্ড ট্রিগার করা ফাংশন ট্রিগার করতে পারবেন এবং আপনার অ্যাপের সাথে সেগুলির ইন্টিগ্রেশন টেস্ট করার জন্য আপনার অ্যাপকে Emulator
suite-এর সাথে কানেক্ট করতে পারবেন।
কোনও প্রোজেক্টে এক্সটেনশন কনফিগারেশন ডিপ্লয় করুন
আপনার এক্সটেনশন ম্যানিফেস্টে কিছু এক্সটেনশন ইনস্ট্যান্স যোগ করার পরে, আপনি Firebase CLI ব্যবহার করে এটি কোনও প্রোজেক্টে ডিপ্লয় করতে পারবেন। আপনি যখন কোনও এক্সটেনশন ম্যানিফেস্টের সাথে ডিপ্লয় করেন, তখন আপনি ম্যানিফেস্টের সমস্ত এক্সটেনশন ইনস্ট্যান্স একবারে একটি প্রোজেক্টে ইনস্টল, আপডেট এবং কনফিগার করেন।
এক্সটেনশন ম্যানিফেস্ট ডিপ্লয় করতে:
- শেল প্রম্পট থেকে, সেভ করা এক্সটেনশন কনফিগারেশন আছে এমন ডিরেক্টরিতে
পরিবর্তন করুন। (এটি হল সেই ডিরেক্টরি যেখানে
firebase.jsonআছে। আপনি যদি এইমাত্রext:exportরান করে থাকেন, তাহলে আপনি ইতিমধ্যেই সঠিক ডিরেক্টরিতে আছেন।) deployকমান্ড রান করুন। আপনি বর্তমান প্রোজেক্ট ছাড়া অন্য কোনও প্রোজেক্টে এক্সটেনশন ডিপ্লয় করতে চাইলে,--project=উল্লেখ করুন:firebase deploy --only extensions –-project=YOUR_PROJECT_ID
deploy কমান্ড প্রতিটি ইনস্ট্যান্স কনফিগারেশন যাচাই করবে, আপনি firebase.json-এ তালিকাভুক্ত নয় এমন কোনও এক্সটেনশন ইনস্ট্যান্স আপনার ডেস্টিনেশন প্রোজেক্ট থেকে মুছতে চান কিনা তা জিজ্ঞাসা করবে এবং তারপরে আপনার সমস্ত এক্সটেনশন ইনস্ট্যান্স ডিপ্লয় করবে।
প্রোজেক্ট-নির্দিষ্ট এক্সটেনশন কনফিগারেশন
সেভ করা এক্সটেনশন কনফিগারেশন একাধিক বিভিন্ন প্রোজেক্টে ডিপ্লয় করার জন্য ব্যবহার করা যেতে পারে: যেমন, একটি স্টেজিং প্রোজেক্ট এবং একটি প্রোডাকশন প্রোজেক্ট। এটি করার সময়, প্রতিটি প্রোজেক্টের জন্য কিছু প্যারামিটারের মান আলাদা হতে পারে।
প্রোজেক্ট-নির্দিষ্ট .env ফাইল এটি সম্ভব করে তোলে:
extensions/EXTENSION_INSTANCE_ID.env.YOUR_PROJECT_ID-এ প্রোজেক্টের মধ্যে আলাদা আলাদা প্যারামিটারের ভ্যালু লিখুনextensions/EXTENSION_INSTANCE_ID.env-এ শেয়ার করা প্যারামিটারের ভ্যালু লিখুন।
কখনও কখনও, আপনার এক্সটেনশন এমুলেট করার সময় আপনি একটি ভিন্ন প্যারামিটার মান ব্যবহার করতে চাইতে পারেন: উদাহরণস্বরূপ, আপনি একটি প্রোডাকশন API কী-এর পরিবর্তে একটি টেস্ট API কী প্রদান করতে চাইতে পারেন। এইসব প্যারামিটার .local ফাইলে রাখুন:
- এমুলেশনের সময় আপনি যেসব নন-সিক্রেট প্যারামিটার ব্যবহার করতে চান সেগুলি
extensions/EXTENSION_INSTANCE_ID.env.local-এ লিখুন - গোপন প্যারামিটারের ভ্যালু এখানে লিখুন
extensions/EXTENSION_INSTANCE_ID.secret.local