এই নির্দেশিকাটি আপনাকে দেখাবে কিভাবে আপনার এক্সটেনশনগুলিকে অপ্রচলিত Firebase Extensions পরিবেশ থেকে একটি ফাংশন কিটে স্থানান্তর করবেন, যা আপনি আপনার নিজস্ব Cloud Functions for Firebase (2nd gen) কোডবেসে ইনস্টল এবং স্থাপন করতে পারবেন।
Firebase Extensions এক্সটেনশন তৈরি, আপডেট এবং অপসারণের সমস্ত দিক পরিচালনা করত। ফাংশন কিটগুলো এক্সটেনশনের সক্ষমতাগুলোকে Cloud Functions for Firebase হিসেবে প্যাকেজ করে। যেহেতু ফাংশন কিটগুলো স্ট্যান্ডার্ড Cloud Functions , তাই আপনি আপনার Firebase প্রোজেক্টের মধ্যে Firebase সিএলআই (CLI) ব্যবহার করে এগুলো তৈরি, আপডেট, ডিলিট এবং ট্রাবলশুট করতে পারেন। এই গাইডটি আপনাকে এখনই আপনার ফাংশনগুলো পরিচালনা করতে এবং আপডেটগুলো উপলব্ধ হওয়ার সাথে সাথে গ্রহণ করতে প্রস্তুত করবে।
এই নির্দেশিকা জুড়ে, Stream Cloud Firestore to BigQuery এক্সটেনশনটি ( firestore-bigquery-export ) একটি উদাহরণ হিসেবে ব্যবহার করা হয়েছে, যা আপনাকে মাইগ্রেশনের প্রতিটি ধাপের কমান্ড এবং তার আউটপুট দেখায়।
আপনার স্থানান্তরের পথ নির্ধারণ করুন
Firebase সকল Firebase Extensions প্রকাশকদেরকে তাদের এক্সটেনশনগুলির জন্য npm-এ প্রকাশিত ফাংশন কিট হিসাবে প্রতিস্থাপন তৈরি করতে উৎসাহিত করে। আপনার এক্সটেনশনগুলির জন্য কোনো ফাংশন কিট প্রতিস্থাপন উপলব্ধ আছে কিনা, তা আপনি কয়েকটি ভিন্ন উপায়ে পরীক্ষা করতে পারেন:
- আপনার প্রোজেক্টের জন্য Firebase কনসোলের এক্সটেনশন পৃষ্ঠায় যান। আপনার ইনস্টল করা প্রতিটি এক্সটেনশনে উল্লেখ করা থাকে যে সেটির কোনো ফাংশন কিট প্রতিস্থাপন উপলব্ধ আছে কিনা।
আপনার Firebase প্রোজেক্টের টার্মিনালে
firebase ext:listচালান, তাহলে দেখতে পাবেন আপনার ইনস্টল করা এক্সটেনশনগুলোর মধ্যে কোনটির অফিশিয়াল বিকল্প রয়েছে।firebase ext:list --project my-projecti extensions: ensuring required API firebaseextensions.googleapis.com is enabled... ✔ extensions: required API firebaseextensions.googleapis.com is enabled i extensions: list of extensions installed in my-project: ┌────────────────────────────────────┬───────────┬────────────────────────────────┬────────┬─────────┬─────────────────────┬───────────────────────────────────────────────────┐ │ Extension │ Publisher │ Instance ID │ State │ Version │ Your last update │ Replacement Kit │ ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤ │ firebase/firestore-bigquery-export │ firebase │ firestore-bigquery-export-zbrp │ ACTIVE │ 0.3.2 │ 2026-06-10 18:35:03 │ @firebase-function-kits/firestore-bigquery-export │ ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤ │ firebase/storage-resize-images │ firebase │ storage-resize-images │ ACTIVE │ 0.3.6 │ 2026-06-03 17:41:24 │ │ └────────────────────────────────────┴───────────┴────────────────────────────────┴────────┴─────────┴─────────────────────┴───────────────────────────────────────────────────┘ ⚠ Notice: Firebase Extensions will shut down on March 31, 2027. Learn more: https://firebase.google.com/docs/extensions/faq-and-troubleshooting
আপনার এক্সটেনশনের জন্য যদি কোনো অফিশিয়াল ফাংশন কিট রিপ্লেসমেন্ট উপলব্ধ থাকে, তাহলে আপনি ' Migrate to function kits on npm' সেকশনটি ব্যবহার করে সেটি মাইগ্রেট করতে পারেন।
যদি আপনি কোনো প্রকাশিত বিকল্প খুঁজে না পান, তাহলে আপনি এক্সটেনশন কোডটি ফোর্ক করে নিজের বিকল্প তৈরি করতে পারেন, কারণ সমস্ত এক্সটেনশনই ওপেন সোর্স। এটি করার জন্য, ‘নিজস্ব তৈরি ফাংশন কিটে মাইগ্রেট করুন’ নির্দেশিকাটি অনুসরণ করুন।
| মাইগ্রেশন পথ নির্বাচন করুন: | npm-এ ফাংশন কিটে স্থানান্তরিত হন নিজের তৈরি ফাংশন কিটে স্থানান্তরিত হন |
npm-এ ফাংশন কিটগুলিতে স্থানান্তরিত করুন
পরিচিত মাইগ্রেশন সীমাবদ্ধতাগুলি পরীক্ষা করুন
একটি এক্সটেনশন ইনস্ট্যান্স মাইগ্রেট করা শুরু করার আগে, যাচাই করে নিন আপনার সেটআপে নিম্নলিখিত কোনো ফিচার ব্যবহৃত হচ্ছে কিনা, যেগুলোর জন্য বিকল্প পদ্ধতির প্রয়োজন অথবা যা এখনও ফাংশন কিটগুলিতে সমর্থিত নয়:
- কাস্টম ডকার রিপোজিটরি এবং কেএমএস কী-এর জন্য একটি ম্যানুয়াল সমাধান প্রয়োজন। Cloud Functions for Firebase কাস্টম ডকার রিপোজিটরি বা কাস্টমার-ম্যানেজড এনক্রিপশন কী (কেএমএস কী) কনফিগার করার জন্য রিপ্লেসমেন্ট সিস্টেম প্যারামিটার সমর্থন করে না। যদি আপনার এক্সটেনশন এই প্যারামিটারগুলোর কোনোটি কনফিগার করে, তবে প্রায়শই জিজ্ঞাসিত প্রশ্নাবলীর (FAQ) সমাধানটি দেখুন।
শুরু করার আগে
আপনাকে Firebase CLI সেট আপ করতে হবে এবং একটি Firebase প্রজেক্ট ইনিশিয়ালাইজ করতে হবে । CLI ব্যবহার করার সময়, নিশ্চিত করুন যে আপনি firebase-tools ভার্সন >= 15.32.0 ব্যবহার করছেন, যেটিতে নতুন মাইগ্রেশন এবং ফাংশন কিট কমান্ডগুলো রয়েছে।
প্রয়োজনীয় অ্যাকাউন্ট অনুমতি এবং ভূমিকা
মাইগ্রেশনের সময় Firebase CLI দ্বারা কী তৈরি এবং কনফিগার করতে হবে তার উপর নির্ভর করে, Firebase এবং Google Cloud সাথে প্রমাণীকরণের জন্য আপনি যে অ্যাকাউন্টটি ব্যবহার করছেন সেটিতে নিম্নলিখিত ভূমিকাগুলি (role) অবশ্যই থাকতে হবে:
-
roles/firebaseextensions.editor -
roles/cloudbuild.builds.editor -
roles/artifactregistry.writer -
roles/run.developer -
roles/iam.serviceAccountUser -
roles/iam.serviceAccountCreator -
roles/cloudfunctions.admin(যদি পাবলিক এন্ডপয়েন্টগুলির জন্যsetIamPermissionsব্যবহার করার প্রয়োজন হয়) -
roles/secretmanager.admin(যদি সিক্রেটস ব্যবহার করা হয়) -
roles/serviceusage.serviceUsageAdmin(যদি আপনার নতুন API সক্রিয় করার প্রয়োজন হয়)
আমরা এমন একটি অ্যাকাউন্ট ব্যবহার করার পরামর্শ দিই যা দিয়ে আগে এক্সটেনশন ইনস্টল করা হয়েছে এবং ফাংশন ডেপ্লয় করা হয়েছে, কারণ সেক্ষেত্রে এই অনুমতিগুলোর বেশিরভাগই আগে থেকেই দেওয়া থাকবে। আপনার মাইগ্রেট করা অ্যাকাউন্টের যদি আরও রোলের প্রয়োজন হয়, তবে সেগুলো যোগ করার জন্য Google Cloud IAM-এর নির্দেশাবলী অনুসরণ করুন।
একটি CLI ওয়ার্কফ্লো বেছে নিন
একটি এক্সটেনশন ইনস্ট্যান্স থেকে npm-এ উপলব্ধ একটি ফাংশন কিটে স্থানান্তরিত হতে, নিম্নলিখিত বিকল্পগুলির মধ্যে একটি বেছে নিন:
- (সুপারিশকৃত)
ext:migrateCLI কমান্ড ব্যবহার করে মাইগ্রেট করুন। এই কমান্ডটি প্রতিস্থাপিত এক্সটেনশনটি আনইনস্টল করার আগে আপনার ফাংশন কিট রিপ্লেসমেন্টটি ডিপ্লয় করে। - ফাংশন কিট CLI কমান্ড ব্যবহার করে মাইগ্রেট করুন। আপনি আপনার এক্সটেনশন আপডেট করতে, একটি ফাংশন কিট ইনস্টল করতে, এক্সটেনশনের মতো করে কনফিগার করতে, কিটটি ডেপ্লয় করতে এবং এক্সটেনশনটি আনইনস্টল করতে আলাদা আলাদা কমান্ড ব্যবহার করতে পারেন। এটি কমান্ডগুলোর ক্রম পরিবর্তন করার বা ধাপগুলোর মধ্যে অতিরিক্ত কাজ সম্পাদন করার জন্য আরও বেশি নমনীয়তা প্রদান করে।
ext:migrate ব্যবহার করে মাইগ্রেট করুন
প্রতিটি এক্সটেনশন ইনস্ট্যান্সের জন্য একবার, নিম্নলিখিত কমান্ডটি চালিয়ে একটি মাইগ্রেশন শুরু করুন:
firebase ext:migrate --project <project-id>
এই কমান্ডটি আপনাকে ধাপে ধাপে দেখিয়ে দেবে:
- মাইগ্রেট করার জন্য এমন একটি এক্সটেনশন নির্বাচন করা, যার একটি অফিসিয়াল ফাংশন কিট প্রতিস্থাপন উপলব্ধ আছে।
- সেই এক্সটেনশনটির একটি নির্দিষ্ট দৃষ্টান্ত নির্বাচন করা।
- প্রয়োজন হলে এক্সটেনশনটি সর্বশেষ সংস্করণে আপডেট করা হচ্ছে।
- ফাংশন কিট ইনস্টল করা এবং এক্সটেনশন ইনস্ট্যান্সটি যেভাবে কনফিগার করা আছে, ঠিক সেভাবেই একটি ইনস্ট্যান্স কনফিগার করা।
- ফাংশন কিটটি স্থাপন করা হচ্ছে।
- ফাংশন কিটটি সফলভাবে ডেপ্লয় হয়েছে এবং সমস্ত লাইফসাইকেল হুক (যদি থাকে) চলেছে কিনা তা যাচাই করা হচ্ছে।
- এক্সটেনশন ইনস্ট্যান্সটি আনইনস্টল করা হচ্ছে।
আপনি যদি নির্দিষ্ট এক্সটেনশন বা এক্সটেনশন ইনস্ট্যান্সটি মাইগ্রেট করতে চান, তবে নিম্নলিখিত কমান্ড-লাইন ফ্ল্যাগগুলি ব্যবহার করে তা উল্লেখ করুন:
firebase ext:migrate --extension firebase/firestore-bigquery-export --project <project-id>
# or
firebase ext:migrate --ext-instance firestore-bigquery-export-abcd --project <project-id>
আপনি যদি নির্দিষ্ট কোন প্যাকেজে মাইগ্রেট করতে চান তা জানেন, বিশেষ করে যদি সেটি গুগলের তালিকাভুক্ত কোনো অফিশিয়াল প্রতিস্থাপন প্যাকেজ না হয়, তাহলে --package ফ্ল্যাগটি ব্যবহার করে তা উল্লেখ করুন:
firebase ext:migrate --ext-instance firestore-bigquery-export-abcd --package @firebase-function-kits/firestore-bigquery-export --project <project-id>
একটি ফাংশন কিট স্থাপন যাচাই করুন
কিটটির firebase deploy কোনো ত্রুটি হয়নি তা যাচাই করতে, ডিপ্লয়মেন্ট লগগুলো পরীক্ষা করে দেখুন কোনো লাইফসাইকেল হুক ট্রিগার হয়েছে কিনা। স্ট্রিম Cloud Firestore টু BigQuery মতো জনপ্রিয় এক্সটেনশনগুলো লাইফসাইকেল হুক ব্যবহার করে। একটি লাইফসাইকেল হুক ট্রিগার হলে দেখতে কেমন হয়, তার একটি উদাহরণ নিচে দেওয়া হলো:
i functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔ functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/europe-west1/queues/kit-firestore-bigquery-export-initBigQuerySync.
i functions: View logs for afterFirstDeploy at: https://console.cloud.google.com/logs/query;query=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22kit-firestore-bigquery-export--initbigquerysync%22%0Aresource.labels.location%3D%22europe-west1%22;project=my-project
এই লগ বার্তাগুলো নিম্নলিখিত বিষয়গুলো নিশ্চিত করে:
- একটি লাইফসাইকেল হুক খুঁজে পাওয়া গেছে এবং কার্যকর করা হয়েছে।
- লাইফসাইকেল হুকটির সংশ্লিষ্ট টাস্ক কিউতে একটি টাস্ক যুক্ত করা হয়েছিল।
- ক্লাউড লগিং-এর একটি লিঙ্ক দেওয়া হয়েছে, যাতে আপনি যাচাই করতে পারেন যে কাজটি কোনো ত্রুটি ছাড়াই সম্পন্ন হয়েছে।
লগগুলিতে কোনও ত্রুটি নেই এবং আপনার টাস্ক কিউ ইভেন্টটি সফলভাবে প্রক্রিয়া করা হয়েছে কিনা তা যাচাই করতে লগস লিঙ্কে ক্লিক করে Google Cloud কনসোলে যান। যদি লাইফসাইকেল ইভেন্টটি সফলভাবে সম্পাদিত না হয়, তবে আপনি নিম্নলিখিত কমান্ডটি চালিয়ে এটি পুনরায় ট্রিগার করতে পারেন:
firebase functions:lifecycle:run <hook-name> <codebase>
আপনি যদি প্রথমবারের মতো একটি ফাংশন কিট ইনস্ট্যান্স ডেপ্লয় করেন, তাহলে চালান:
firebase functions:lifecycle:run afterFirstDeploy <kit-instance-id>
যাচাইকরণ চলাকালীন যেকোনো সময়ে যদি আপনি এই মাইগ্রেশনটি থামাতে বা পূর্বাবস্থায় ফেরাতে চান, তাহলে আপনি ‘এক্সটেনশন আনইনস্টল করুন’ অংশে দেওয়া নির্দেশাবলী অনুসরণ করে কিটটি আনইনস্টল করতে পারেন।
ফাংশন কিটের README পর্যালোচনা করুন।
কিছু কিটের জন্য ফাংশন কিট দ্বারা স্বয়ংক্রিয়ভাবে সম্পন্ন হওয়া কাজের বাইরেও অতিরিক্ত কিছু কাজ করার প্রয়োজন হতে পারে। আপনি যে কিটটি ইনস্টল করছেন তার README পর্যালোচনা করুন এবং যেকোনো অতিরিক্ত নির্দেশাবলী অনুসরণ করুন।
ফাংশন কিট CLI ব্যবহার করে মাইগ্রেট করুন
শুরু করার আগে, যে এক্সটেনশনটিকে আপনি একটি কিটে মাইগ্রেট করতে চান তার ইনস্ট্যান্স আইডি এবং এর প্রতিস্থাপনকারী কিটের এনপিএম প্যাকেজের নাম শনাক্ত করে লিখে রাখুন। আপনি firebase ext:list এর আউটপুট ব্যবহার করে এই দুটিই খুঁজে পেতে পারেন। ext:list ব্যবহারের একটি উদাহরণের জন্য “আপনার মাইগ্রেশন পথ নির্ধারণ” দেখুন।
১. আপনার এক্সটেনশন ইনস্ট্যান্সটিকে সর্বশেষ সংস্করণে আপগ্রেড করুন।
আপনার এক্সটেনশন ইনস্ট্যান্স এবং এর প্রতিস্থাপন কিটের মধ্যে পার্থক্য কমানোর জন্য আপনাকে অবশ্যই আপনার এক্সটেনশনটি সর্বশেষ সংস্করণে আপডেট করতে হবে । যদি আপনার এক্সটেনশন আপগ্রেড করা না হয়, তবে আপনার এক্সটেনশন ইনস্ট্যান্স এবং এর প্রতিস্থাপন কিটের মধ্যে উল্লেখযোগ্য, সমস্যা সৃষ্টিকারী পরিবর্তন থাকতে পারে। বিভিন্ন সংস্করণে প্যারামিটারের পরিবর্তনের কারণে এক্সপোর্ট করা কনফিগারেশনটি কিটের প্রত্যাশিত কনফিগারেশনের সাথে নাও মিলতে পারে।
আপনার এক্সটেনশনটি কোথায় ইনস্টল করা হয়েছে তার উপর নির্ভর করে, এটি আপডেট করতে নিম্নলিখিত বিকল্পগুলির মধ্যে একটি ব্যবহার করুন:
- Firebase কনসোল থেকে
- Firebase CLI থেকে নিম্নলিখিত উপায়ে:
-
firebase ext:update <extension-instance-id> --project <project-id> firebase deploy --only extensions --project <project-id>
-
আপনি এই ধাপটি এড়িয়ে গেলে, আপনার এক্সটেনশনটি সর্বশেষ সংস্করণে না থাকলে কনফিগারেশন এক্সপোর্ট করার সময় CLI আপনাকে আপগ্রেড করার জন্য অনুরোধ করবে।
২. প্রতিস্থাপন ফাংশন কিট ইনস্ট্যান্সটি পর্যালোচনা করুন এবং ইনস্টল করুন।
আপনি নিম্নলিখিত CLI কমান্ড ব্যবহার করে ফাংশন কিটটি ইনস্টল করতে পারেন:
firebase functions:kits:install --template migration --no-configure --package <npm-package-name> --project <project-id>
ইনস্টলেশনের সময় আপনার কিটের জন্য একটি ইনস্ট্যান্স আইডি বেছে নিলে, পরবর্তীতে মাইগ্রেশন নির্দেশাবলীতে ব্যবহারের জন্য সেটি লিখে রাখতে ভুলবেন না।
কিটটি ইনস্টল হয়ে গেলে, আপনার Firebase প্রোজেক্টের ভিতরে function-kits/<kit-name>/source মতো একটি নতুন ডিরেক্টরি তৈরি হয়। এই ডিরেক্টরিতে আপনার এক্সটেনশন প্রতিস্থাপনকারী কিটসহ npm প্যাকেজটি এবং একটি সাধারণ index.ts ফাইল থাকে, যা Firebase ডিপ্লয় ও কাস্টম কনফিগারেশন সেট করার জন্য ওই ফাংশনগুলো এক্সপোর্ট করে।
কিটটির README পর্যালোচনা করুন এবং সেখানে তালিকাভুক্ত যেকোনো অতিরিক্ত নির্দেশাবলী অনুসরণ করুন।
যদি আপনার একই প্রোজেক্টে কিটটির একাধিক ইনস্ট্যান্স থাকে, তাহলে আপনি একই কিটের নতুন ইনস্ট্যান্স তৈরি করতে এই কমান্ডটি পুনরাবৃত্তি করতে পারেন। এছাড়াও আপনি ভিন্ন কনফিগারেশনের দুটি আলাদা Firebase প্রোজেক্টে (যেমন, একটি স্টেজিং প্রোজেক্ট এবং একটি প্রোডাকশন প্রোজেক্ট) একটিমাত্র কিট ইনস্ট্যান্স ডেপ্লয় করতে পারেন। এই অ্যাডভান্সড সেটআপগুলো সম্পর্কে আরও জানতে, অ্যাডভান্সড মাইগ্রেশন দেখুন।
সমাধান করা উদাহরণ:
firebase functions:kits:install --template migration --no-configure --package @firebase-function-kits/firestore-bigquery-export --project my-project
৩. এক্সটেনশনের অনুরূপভাবে ফাংশন কিট ইনস্ট্যান্সটি কনফিগার করুন।
যে এক্সটেনশনটিকে এটি প্রতিস্থাপন করছে, তার অনুরূপ একটি কনফিগারেশন দিয়ে আপনাকে এই কিট ইনস্ট্যান্সটি কাস্টমাইজ করতে হবে। আপনি আপনার এক্সটেনশন ইনস্ট্যান্স কনফিগারেশন একটি .env ফাইলে এক্সপোর্ট করতে পারেন, যা কিট সহ সমস্ত Cloud Functions জন্য প্যারামিটার, এনভায়রনমেন্ট ভেরিয়েবল এবং সিক্রেট রেফারেন্স কনফিগারেশন ডেটা সংরক্ষণ করে। এটিকে সরাসরি আপনার কিটের কনফিগারেশন ফাইলে এক্সপোর্ট করতে, চালান:
firebase ext:export --mode functions --instance <extension-instance-id> --kit-instance <kit-instance-id> --project <project-id>
এই ধাপের শেষে, এই ইনস্ট্যান্সের কনফিগারেশন তথ্য আপনার ইনস্ট্যান্স কনফিগ ডিরেক্টরিতে থাকা একটি প্রজেক্ট-নির্দিষ্ট .env ফাইলে সংরক্ষিত হয়, যেমন: function-kits/<kit-name>/config-<instance-id>/.env.<project-id>
৪. কিট প্রতিস্থাপন স্থাপন ও যাচাই করুন
এখন যেহেতু কিটটি ইনস্টল করা হয়েছে এবং ফাংশনের একটি সেট হিসাবে উপলব্ধ, আপনি কিট প্রতিস্থাপনটি ডেপ্লয় করতে পারেন। ফাংশন কিটগুলো সাধারণ ফাংশনের মতোই কাজ করে, যেখানে প্রতিটি কিট ইনস্ট্যান্স আপনার ফাংশনগুলোকে সংগঠিত করার জন্য একটি পৃথক কোডবেস হিসাবে কাজ করে। আপনি আপনার সমস্ত ফাংশন অথবা শুধু একটি নির্দিষ্ট কিট ইনস্ট্যান্স ডেপ্লয় করতে পারেন। একটিমাত্র এক্সটেনশন ইনস্ট্যান্স মাইগ্রেট করার সময়, শুধুমাত্র সেই কিট ইনস্ট্যান্সটিই ডেপ্লয় করুন।
আপনার কিট যদি এমন কোনো নতুন প্যারামিটার ব্যবহার করে যা আপনি যে এক্সটেনশন ইনস্ট্যান্স থেকে মাইগ্রেট করেছেন সেখানে ছিল না, তাহলে ডেপ্লয়মেন্ট প্রক্রিয়ার শুরুতে Firebase CLI আপনাকে সেগুলোর জন্য অনুরোধ করবে। একটি আপ-টু-ডেট firestore-bigquery-export এক্সটেনশনের এই উদাহরণে এটি প্রত্যাশিত নয়, কিন্তু অনেক কিটই তাদের ব্যবহৃত যেকোনো ইভেন্ট ট্রিগার সোর্সের জন্য নতুন প্যারামিটারের অনুরোধ করে। এই মাইগ্রেশনের অংশ হিসেবে, আপডেট করা কিটগুলো এখন ২য় প্রজন্মের ফাংশন ব্যবহার করছে, যেখানে এক্সটেনশনগুলো আগে ১ম প্রজন্মের ফাংশন ব্যবহার করত। ২য় প্রজন্মে, ফাংশনগুলো তাদের ইভেন্ট সোর্সের কাছাকাছি থাকে এবং একটি অতিরিক্ত প্যারামিটার হিসেবে যুক্ত হয়। ভবিষ্যতের আপডেটে, যদি নতুন প্যারামিটার যোগ করা হয়, তাহলে পরবর্তী ডেপ্লয়মেন্টের সময় CLI আপনাকে অনুরোধ করবে।
সমাধান করা উদাহরণ:
firebase deploy --only functions:firestore-bigquery-export --project my-project
আউটপুট:
=== Deploying to 'my-project'...
i deploying functions
i functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project
i functions: ensuring required API bigquery.googleapis.com is enabled...
i functions: ensuring required API cloudtasks.googleapis.com is enabled...
✔ functions: required APIs are enabled
i functions: granting declarative IAM roles to managed service account:
- BigQuery Data Editor
- BigQuery User
- Cloud Datastore User
- Eventarc Event Receiver
- roles/run.invoker
✔ functions: successfully granted IAM roles
i functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-fsexportbigquery(us-central1)...
i functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-initBigQuerySync(us-central1)...
i functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-setupBigQuerySync(us-central1)...
✔ functions[kit-firestore-bigquery-export-fsexportbigquery(us-central1)] Successful create operation.
✔ functions[kit-firestore-bigquery-export-initBigQuerySync(us-central1)] Successful create operation.
✔ functions[kit-firestore-bigquery-export-setupBigQuerySync(us-central1)] Successful create operation.
i functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔ functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/us-central1/queues/kit-firestore-bigquery-export-initBigQuerySync.
✔ Deploy complete!
কিটটির firebase deploy কোনো ত্রুটি হয়নি তা যাচাই করতে, ডিপ্লয়মেন্ট লগগুলো পরীক্ষা করে দেখুন কোনো লাইফসাইকেল হুক ট্রিগার হয়েছে কিনা। স্ট্রিম Cloud Firestore টু BigQuery মতো জনপ্রিয় এক্সটেনশনগুলো লাইফসাইকেল হুক ব্যবহার করে। একটি লাইফসাইকেল হুক ট্রিগার হলে দেখতে কেমন হয়, তার একটি উদাহরণ নিচে দেওয়া হলো:
i functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔ functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/europe-west1/queues/kit-firestore-bigquery-export-initBigQuerySync.
i functions: View logs for afterFirstDeploy at: https://console.cloud.google.com/logs/query;query=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22kit-firestore-bigquery-export--initbigquerysync%22%0Aresource.labels.location%3D%22europe-west1%22;project=my-project
এই লগ বার্তাগুলো নিম্নলিখিত বিষয়গুলো নিশ্চিত করে:
- একটি লাইফসাইকেল হুক খুঁজে পাওয়া গেছে এবং কার্যকর করা হয়েছে।
- লাইফসাইকেল হুকটির সংশ্লিষ্ট টাস্ক কিউতে একটি টাস্ক যুক্ত করা হয়েছিল।
- ক্লাউড লগিং-এর একটি লিঙ্ক দেওয়া হয়েছে, যাতে আপনি যাচাই করতে পারেন যে কাজটি কোনো ত্রুটি ছাড়াই সম্পন্ন হয়েছে।
লগগুলিতে কোনও ত্রুটি নেই এবং আপনার টাস্ক কিউ ইভেন্টটি সফলভাবে প্রক্রিয়া করা হয়েছে কিনা তা যাচাই করতে লগস লিঙ্কে ক্লিক করে Google Cloud কনসোলে যান। যদি লাইফসাইকেল ইভেন্টটি সফলভাবে সম্পাদিত না হয়, তবে আপনি নিম্নলিখিত কমান্ডটি চালিয়ে এটি পুনরায় ট্রিগার করতে পারেন:
firebase functions:lifecycle:run <hook-name> <codebase>
আপনি যদি প্রথমবারের মতো একটি ফাংশন কিট ইনস্ট্যান্স ডেপ্লয় করেন, তাহলে চালান:
firebase functions:lifecycle:run afterFirstDeploy <kit-instance-id>
যাচাইকরণ চলাকালীন যেকোনো সময়ে যদি আপনি এই মাইগ্রেশনটি থামাতে বা পূর্বাবস্থায় ফেরাতে চান, তাহলে আপনি ‘এক্সটেনশন আনইনস্টল করুন’ অংশে দেওয়া নির্দেশাবলী অনুসরণ করে কিটটি আনইনস্টল করতে পারেন।
৫. এক্সটেনশনটি আনইনস্টল করুন।
আপনার ডেপ্লয় করা ফাংশন কিট যাচাই করার পরে, আপনি আপনার এক্সটেনশনটি আনইনস্টল করতে পারেন, যাতে কিটের জন্য একবার এবং এক্সটেনশনের জন্য একবার এর আচরণের পুনরাবৃত্তি না ঘটে। আপনি --immediate ফ্ল্যাগটি পাস করে, যেভাবেই ইনস্টল করে থাকুন না কেন, Firebase CLI থেকে সমস্ত এক্সটেনশন আনইনস্টল করতে পারেন:
firebase ext:uninstall <extension-instance-id> --project <project-id> --immediate
সমাধান করা উদাহরণ:
firebase ext:uninstall firestore-bigquery-export --project my-project --immediate
আউটপুট:
i extensions: uninstalling firestore-bigquery-export...
i extensions: deleting extension instance resources in project my-project...
✔ extensions: successfully uninstalled firestore-bigquery-export
উন্নত স্থানান্তর
আপনি একাধিক Firebase প্রোজেক্টে এক্সটেনশন রাখতে পারেন, যেগুলো আপনি একটিমাত্র কোডবেস দিয়ে পরিচালনা করতে চান। উদাহরণস্বরূপ, যদি আপনি একই ইনফ্রাস্ট্রাকচার একটি testing এনভায়রনমেন্ট এবং একটি production এনভায়রনমেন্টে ডেপ্লয় করেন, যার প্রতিটিতে একটি documents Cloud Firestore ইনস্ট্যান্স আছে যা আপনি BigQuery তে এক্সপোর্ট করেন, তাহলে আপনার firestore-bigquery-export এক্সটেনশনটির দুটি ইনস্ট্যান্স ইনস্টল করা থাকতে পারে:
-
export-documents-testing -
export-documents-production
আপনি যদি Firebase CLI ব্যবহার করে একটি কোডবেসের মধ্যে এই দুটি এক্সটেনশন ইনস্ট্যান্সকে দুটি ফাংশন কিট ইনস্ট্যান্সে মাইগ্রেট করেন এবং firebase deploy --project testing ও firebase deploy --project production কমান্ড ব্যবহার করে ডিপ্লয় করেন, তাহলে প্রতিটি ডিপ্লয়ের ফলে testing এবং production উভয় এনভায়রনমেন্টেই দুটি করে ইনস্ট্যান্স তৈরি হবে।
এর পরিবর্তে, দুটি এক্সটেনশন ইনস্ট্যান্সকে firestore-bigquery-export এর একটি ফাংশন কিট ইনস্ট্যান্স দিয়ে প্রতিস্থাপন করুন, যা একাধিক প্রজেক্টে ডেপ্লয় করা থাকবে এবং প্রতিটি প্রজেক্টের নিজস্ব কনফিগারেশন থাকবে। ইনস্ট্যান্সটির জন্য আপনার কনফিগারেশন ডিরেক্টরিটি নিম্নলিখিতের মতো দেখতে হবে:
-
config-export-documents/-
.env.testing -
.env.production
-
testing এবং production প্রতিটি ডেপ্লয়মেন্ট সংশ্লিষ্ট কনফিগারেশন সহ আপনার কিটের একটি ইনস্ট্যান্স তৈরি করে। বিদ্যমান CLI কমান্ডগুলো এই সেটআপটি তৈরি করে, যদি আপনি ext:migrate বা functions:kits:install এর প্রতিটি আহ্বানে --project ফ্ল্যাগটি পাস করেন।
সমাধান করা উদাহরণ:
firebase functions:kits:install --package @firebase-function-kits/firestore-bigquery-export --project testing --no-configure --template migration
✔ What would you like to name this kit? firestore-bigquery-export
✔ What would you like to name this instance? export-documents
✔ Wrote function-kits/firestore-bigquery-export/source/package.json
✔ Wrote function-kits/firestore-bigquery-export/source/tsconfig.json
✔ Wrote function-kits/firestore-bigquery-export/source/.gitignore
✔ Wrote function-kits/firestore-bigquery-export/source/src/index.ts
i functions: Running npm install
✔ Wrote configuration info to firebase.json
✔ functions: Function kit firestore-bigquery-export successfully installed.
# This creates the export-documents instance with an empty .env.testing file
# for the testing project. Now populate it via export:
firebase ext:export --mode functions --instance export-documents-testing \
--kit-instance export-documents --project testing
# Repeat the export for production into the same kit instance to create
# .env.production from the export-documents-prod instance:
firebase ext:export --mode functions --instance export-documents-prod \
--kit-instance export-documents --project production
এখন আপনার কাছে একটিমাত্র কিট ইনস্ট্যান্স কনফিগার করা আছে, যা আপনার testing এবং production প্রজেক্টে তাদের নিজ নিজ কনফিগারেশন সহ ডেপ্লয় করার জন্য ব্যবহৃত হবে। আপনি যদি testing প্রজেক্টে একটি ইনস্ট্যান্স তৈরি করেন এবং production প্রজেক্টে একই প্যাকেজের জন্য functions:kits:install কমান্ডটি চালান, তাহলে আপনাকে testing জন্য কনফিগার করা ইনস্ট্যান্সটি পুনরায় ব্যবহার করার অথবা একটি দ্বিতীয় ইনস্ট্যান্স ইনস্টল করার বিকল্প দেখানো হবে।