এক্সটেনশন ম্যানিফেস্টের মাধ্যমে প্রোজেক্ট কনফিগারেশন ম্যানেজ করুন

এক্সটেনশন ম্যানিফেস্ট হল এক্সটেনশন ইনস্ট্যান্স ও সেগুলির কনফিগারেশনের একটি তালিকা। ম্যানিফেস্টের মাধ্যমে আপনি এগুলি করতে পারবেন:

  • অন্যদের সাথে আপনার এক্সটেনশন কনফিগারেশন শেয়ার করুন
  • বিভিন্ন প্রোজেক্টের মধ্যে আপনার এক্সটেনশন কনফিগারেশন কপি করুন (যেমন, আপনার স্টেজিং প্রোজেক্ট থেকে আপনার প্রোডাকশন প্রোজেক্টে)
  • আপনার সব এক্সটেনশন একবারে ডিপ্লয় করুন
  • 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

প্রোজেক্টের এক্সটেনশন কনফিগারেশন এক্সপোর্ট করুন

ম্যানিফেস্টে কোনও প্রোজেক্টের বর্তমান এক্সটেনশন কনফিগারেশন সেভ করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:

  1. আপনি আগে থেকে এটি না করে থাকলে, Firebase CLI সেট-আপ করুন
  2. শেল প্রম্পট থেকে প্রোজেক্ট ডিরেক্টরিতে পরিবর্তন করুন। (আপনার প্রোজেক্ট ডিরেক্টরিতে firebase.json ফাইলটি আছে)।
  3. ext:export কমান্ড রান করুন:
    firebase ext:export

ext:export কমান্ডটি firebase.json ফাইলে একটি extensions বিভাগ যোগ করবে। এছাড়াও, ext:export কমান্ডটি একটি extensions ডিরেক্টরি তৈরি করে যার মধ্যে আপনার ইনস্টল করা প্রতিটি এক্সটেনশন ইনস্ট্যান্সের জন্য একটি .env ফাইল থাকে। এইসব ফাইলে প্রতিটি ইনস্ট্যান্সের জন্য কনফিগারেশন প্যারামিটার থাকে।

Firebase Local Emulator Suite-এর মাধ্যমে এক্সটেনশন কনফিগারেশন পরীক্ষা করুন

আপনার এক্সটেনশন ম্যানিফেস্টে কিছু এক্সটেনশন ইনস্ট্যান্স যোগ করার পরে, আপনি Local Emulator Suite ব্যবহার করে সেগুলি পরীক্ষা করতে পারবেন।

  1. Local Emulator Suite ইনস্টল ও কনফিগার করুন।

  2. 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 ব্যবহার করে এটি কোনও প্রোজেক্টে ডিপ্লয় করতে পারবেন। আপনি যখন কোনও এক্সটেনশন ম্যানিফেস্টের সাথে ডিপ্লয় করেন, তখন আপনি ম্যানিফেস্টের সমস্ত এক্সটেনশন ইনস্ট্যান্স একবারে একটি প্রোজেক্টে ইনস্টল, আপডেট এবং কনফিগার করেন।

এক্সটেনশন ম্যানিফেস্ট ডিপ্লয় করতে:

  1. শেল প্রম্পট থেকে, সেভ করা এক্সটেনশন কনফিগারেশন আছে এমন ডিরেক্টরিতে পরিবর্তন করুন। (এটি হল সেই ডিরেক্টরি যেখানে firebase.json আছে। আপনি যদি এইমাত্র ext:export রান করে থাকেন, তাহলে আপনি ইতিমধ্যেই সঠিক ডিরেক্টরিতে আছেন।)
  2. 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