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

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

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

প্রজেক্টের বর্তমান কনফিগারেশন পরিবর্তন না করেই, আপনি Firebase CLI-এর বেশিরভাগ ext: কমান্ড --local অপশনসহ চালাতে পারেন এক্সটেনশন ম্যানিফেস্ট আপডেট করার জন্য।

উদাহরণস্বরূপ:

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 চালু হবে এবং আপনি এক্সটেনশনগুলির যেকোনো ব্যাকগ্রাউন্ডে চালিত ফাংশন চালু করতে পারবেন ও আপনার অ্যাপের সাথে সেগুলির ইন্টিগ্রেশন পরীক্ষা করার জন্য আপনার অ্যাপটিকে এমুলেটর স্যুটের সাথে সংযুক্ত করতে পারবেন।

একটি প্রকল্পে এক্সটেনশন কনফিগারেশন স্থাপন করুন

আপনার এক্সটেনশন ম্যানিফেস্টে কিছু এক্সটেনশন ইনস্ট্যান্স যোগ করার পরে, আপনি 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 ফাইলে রাখুন।

কখনও কখনও, আপনার এক্সটেনশনগুলো অনুকরণ করার সময় আপনি একটি ভিন্ন প্যারামিটার মান ব্যবহার করতে চাইতে পারেন: উদাহরণস্বরূপ, আপনি প্রোডাকশন এপিআই কী-এর পরিবর্তে একটি টেস্ট এপিআই কী প্রদান করতে চাইতে পারেন। এই প্যারামিটারগুলো একটি .local ফাইলে রাখুন:

  • এমুলেশনের সময় ব্যবহার করতে চান এমন অ-গোপনীয় প্যারামিটারগুলো extensions/ EXTENSION_INSTANCE_ID .env.local ফোল্ডারে রাখুন।
  • গোপন প্যারামিটারের মানগুলি extensions/ EXTENSION_INSTANCE_ID .secret.local এ রাখুন।