বেশিরভাগ সময়, আমরা Firebase কনসোল থেকে স্বয়ংক্রিয় রোলআউট অথবা ম্যানুয়ালি চালু করা রোলআউট ব্যবহার করার পরামর্শ দিই। তবে, আপনার আরও কাস্টমাইজড ডেপ্লয়মেন্ট ফ্লো-এর প্রয়োজন হতে পারে। App Hosting কাস্টম ডেপ্লয়মেন্টের জন্য একাধিক অপশন রয়েছে।
উৎস থেকে স্থাপন করুন
সোর্স থেকে ডিপ্লয় করলে, কোনো স্থায়ী গিটহাব সংযোগের প্রয়োজন ছাড়াই আপনি আপনার অ্যাপ্লিকেশনের সোর্স কোড এবং কনফিগারেশন সরাসরি App Hosting এ পুশ করতে পারেন।
সোর্স থেকে ডেপ্লয় করার সময়, App Hosting আপনার সোর্স কোড একটি Google Cloud Storage বাকেটে আপলোড করে, Cloud Build -এ আপনার ফ্রেমওয়ার্কের বিল্ড কমান্ড চালায় এবং কম্পাইল করা আর্টিফ্যাক্টগুলো Cloud Run ও ক্লাউড সিডিএন-এ ডেপ্লয় করে। লোকাল সোর্স ডেপ্লয়মেন্ট এবং গিটহাব ডেপ্লয়মেন্ট—উভয়ের ক্ষেত্রেই একই বিল্ড প্রসেস ব্যবহার করা হয়। যদি আপনার প্রোজেক্টে একটি .gitignore ফাইল থাকে, তবে এর ভেতরে তালিকাভুক্ত ফাইল ও ফোল্ডারগুলো আপনার ডেপ্লয়মেন্ট থেকে বাদ দেওয়া হয়।
আপনি Firebase CLI অথবা Firebase কনসোল ব্যবহার করে স্থানীয় উৎস থেকে ডেপ্লয় করতে পারেন।
প্রয়োজনীয় IAM অনুমতি এবং পরিকাঠামো সেটআপ
যেহেতু Firebase CLI এবং Firebase কনসোল উভয়ই আপনার সোর্স আর্কাইভ সংরক্ষণ ও বিল্ড করার জন্য একই ব্যাকএন্ড পরিকাঠামো ব্যবহার করে, তাই এই উভয় ডেপ্লয়মেন্ট পদ্ধতির ক্ষেত্রেই একই IAM অনুমতির প্রয়োজনীয়তা প্রযোজ্য ।
আপনি প্রথমবারের মতো কোনো নির্দিষ্ট অবস্থানে (অঞ্চলে) ডেপ্লয় করছেন কি না, তার উপর সুনির্দিষ্ট প্রয়োজনীয়তাগুলো নির্ভর করে। পারমিশন সম্পর্কে আরও তথ্যের জন্য, Firebase IAM-এর ওভারভিউ এবং নির্দিষ্ট Firebase অ্যাপ হোস্টিং পারমিশনগুলো দেখুন।
প্রাথমিক অনবোর্ডিংয়ের জন্য অনুমতি (কোনো স্থানে প্রথমবার স্থাপন)
যখন কোনো প্রজেক্ট লোকেশনে প্রথমবারের মতো লোকাল সোর্স ডেপ্লয়মেন্ট শুরু করা হয়, তখন Hosting আপনার আর্কাইভগুলো সংরক্ষণের জন্য একটি GCS বাকেট প্রস্তুত করতে হয় এবং Hosting সার্ভিস এজেন্টকে সেগুলোতে অ্যাক্সেস করার অনুমতি দিতে হয়। যেহেতু এগুলো প্রজেক্ট-স্তরের প্রশাসনিক কাজ, তাই এগুলোর জন্য প্রজেক্ট ওনার (Project Owner) বা আইএএম অ্যাডমিন (IAM Admin) পারমিশন প্রয়োজন । সাধারণ এডিটর (Editor) বা ভিউয়ার (Viewer) রোলের কোনো ব্যবহারকারী এই প্রাথমিক সেটআপটি করতে পারেন না এবং তাকে ব্লক করা হবে।
পূর্বশর্ত সেটআপ অনুমতিগুলির মধ্যে রয়েছে:
- স্টোরেজ এপিআই সক্রিয় করুন :
serviceusage.services.enable - উৎস বাকেট তৈরি করুন :
storage.buckets.createএবংstorage.buckets.list - সার্ভিস এজেন্ট কনফিগার করুন :
resourcemanager.projects.setIamPolicyব্যবহার করে Hosting রিড অ্যাক্সেস (roles/storage.objectViewer) দিন, যাতে এটি বিল্ডের সময় আপলোড করা কোড ফেচ করতে পারে।
প্রাথমিক ডেপ্লয়মেন্টের জন্য, GCS বাকেটটি ৩০-দিনের লাইফসাইকেল সহ তৈরি করা হয়, যার পরে বাকেটটি মুছে ফেলা হয়। তবে, আপনি ক্লাউড কনসোলে Cloud Storage -> Buckets -> Lifecycle -> Rules- এ গিয়ে এই সময়সীমাটি পরিচালনা করতে পারেন। অবজেক্ট লাইফসাইকেল পরিচালনা দেখুন।
পরবর্তী ডেপ্লয়মেন্টের জন্য অনুমতি (লোকেশন ইনিশিয়ালাইজ করার পর)
একবার কোনো অবস্থানের জন্য সোর্স বাকেট এবং রোল বাইন্ডিং শুরু হয়ে গেলে (প্রাথমিক CLI ডেপ্লয়মেন্ট বা কনসোল সেটআপের মাধ্যমে), সাধারণ ডেভেলপার, এডিটর বা App Hosting অ্যাডমিনরা আপডেট ডেপ্লয় করতে পারেন। সাধারণ ডেপ্লয়মেন্টের জন্য প্রোজেক্ট-স্তরের অ্যাডমিনিস্ট্রেশন অনুমতির প্রয়োজন হয় না।
সক্রিয় ডেপ্লয়মেন্ট অনুমতিগুলির মধ্যে রয়েছে:
- বাকেট যাচাই করুন :
storage.buckets.list - উৎস আর্কাইভ আপলোড করুন :
storage.objects.create - বিল্ড ও রোলআউট চালু করুন : স্ট্যান্ডার্ড Hosting অনুমতি (
apphosting.builds.createএবংapphosting.rollouts.create)
Firebase CLI ব্যবহার করে সোর্স থেকে ডিপ্লয় করুন
Firebase CLI v14.4.0 এবং এর উচ্চতর সংস্করণ আপনাকে আপনার অ্যাপের সোর্স কোড এবং কনফিগারেশন সরাসরি আপনার লোকাল মেশিন থেকে Firebase-এ পুশ করার সুবিধা দেয়। এটি খুবই সুবিধাজনক, বিশেষ করে যদি আপনি আগে থেকেই অন্যান্য Firebase ডেপ্লয়মেন্ট (যেমন সিকিউরিটি রুল বা ফাংশন) পরিচালনা করেন এবং একটিমাত্র CLI কমান্ডের মাধ্যমে আপনার ওয়েব অ্যাপ ও ব্যাকএন্ড সার্ভিসগুলো একসাথে ডেপ্লয় করতে চান।
পূর্বশর্ত
- আপনার প্রকল্পগুলো অবশ্যই ব্লেজ প্ল্যানের অন্তর্ভুক্ত হতে হবে।
- আপনাকে অবশ্যই firebase-tools ভার্সন 14.4.0 বা তার উচ্চতর সংস্করণ ব্যবহার করতে হবে।
স্থাপনের ধাপগুলি
- আপনার স্থানীয় প্রজেক্ট ডিরেক্টরিতে
firebase init apphostingচালান। - নির্দেশিত হলে, 'Use an existing project' নির্বাচন করুন এবং আপনার কাঙ্ক্ষিত Firebase প্রজেক্টটি বেছে নিন।
- ডেপ্লয় করার জন্য একটি নতুন বা বিদ্যমান ব্যাকএন্ড নির্বাচন করুন; এই ধাপে আপনার লোকাল ডিরেক্টরির জন্য Hosting ডেপ্লয়মেন্ট সেট আপ করা হয় এবং আপনার কাছে কনফিগারেশনের বিবরণ চাওয়া হয়:
- যে ব্যাকএন্ডে ডিপ্লয় করতে হবে তার আইডি
- নতুন ব্যাকএন্ড তৈরি করার ক্ষেত্রে, যে অঞ্চলে ডেপ্লয় করতে হবে।
- আপনার অ্যাপ্লিকেশন কোডের রুট ডিরেক্টরির পথ
- আপনার পছন্দের Node.js রানটাইম । একটি ভার্সনযুক্ত রানটাইম নির্বাচন করলে অটোমেটিক বেস ইমেজ আপডেট (ABIU) আপনার অন্তর্নিহিত পরিবেশে স্বয়ংক্রিয়ভাবে নিরাপত্তা প্যাচ প্রয়োগ করতে সক্ষম হয়।
- App Hosting আপনার ডেপ্লয়মেন্ট সংক্রান্ত পছন্দগুলো
firebase.jsonফাইলে সংরক্ষণ করে এবং আপনার লোকাল প্রোজেক্টে ফাইলটি আগে থেকে না থাকলে তা তৈরি করে। ইনিশিয়ালাইজেশন সফলভাবে সম্পন্ন হলে, আপনার সোর্স কোড ডেপ্লয় করার জন্যfirebase deployচালান।
উদাহরণ firebase.json
{
"apphosting": [
{
"backendId": "my-backend",
// rootDir specifies the directory containing the app to deploy, but the entire
// parent directory of firebase.json will be zipped and uploaded to ensure that
// dependencies outside of the app directory will be available at build time.
"rootDir": "./my-app",
"ignore": [
"node_modules",
".git",
"firebase-debug.log",
"firebase-debug.*.log",
"functions"
]
}
]
}
ফায়ারবেস কনসোল দিয়ে স্থাপন করুন (জিপ আপলোড)
Firebase কনসোল সরাসরি একটি কম্প্রেসড সোর্স আর্কাইভ আপলোড করে অ্যাপ্লিকেশন ডেপ্লয় করার জন্য একটি গ্রাফিক্যাল ইন্টারফেস প্রদান করে। এটি গিটহাব সংযোগ পদ্ধতির একটি বিকল্প হিসেবে কাজ করে, বিশেষত যখন আপনি গিটহাব ব্যবহার করতে চান না বা একটি ভিন্ন CI/CD সেটআপ পছন্দ করেন।
প্রাথমিক ব্যাকএন্ড তৈরির সময় অথবা বিদ্যমান কোনো ব্যাকএন্ডে ম্যানুয়াল রোলআউট করার সময় আর্কাইভ আপলোড করা যেতে পারে, যার মধ্যে Firebase CLI ব্যবহার করে প্রাথমিকভাবে ডেপ্লয় করা ব্যাকএন্ডগুলোও অন্তর্ভুক্ত।
সমর্থিত ফরম্যাট
কনসোল আপলোডারটি স্বাভাবিকভাবেই দুটি সংকুচিত আর্কাইভ ফরম্যাট যাচাই করে এবং গ্রহণ করে:
-
.zip -
.tgz
এই ফরম্যাটগুলো ফাইল আপলোডারের বিবরণীতে স্পষ্টভাবে দেখানো থাকে।
স্থাপনের ধাপগুলি
বিকল্প A: প্রাথমিক ব্যাকএন্ড অনবোর্ডিংয়ের সময়
- উৎস নির্বাচন করুন : ব্যাকএন্ড তৈরির উইজার্ডে, "আপনি কীভাবে আপনার অ্যাপ ইম্পোর্ট করতে চান?" ধাপে ' আপলোড এ জিপ' নির্বাচন করুন।
- অনবোর্ডিং প্রস্তুতি : "Next" ক্লিক করলে ব্যাকগ্রাউন্ড প্রস্তুতি প্রক্রিয়াটি চালু হয়, যা পর্যায়ক্রমে স্টোরেজ এপিআই (Storage API) সক্রিয় করে, সঠিক রোলগুলো সেট আপ করা নিশ্চিত করে এবং বাকেটটি আপসার্ট করে। ইউআই (UI)-তে একটি লোডিং স্পিনার দেখা যায়, যেখানে বিভিন্ন স্ট্যাটাস মেসেজ থাকে: "এপিআই সক্রিয় করা হচ্ছে...", "অনুমতি যাচাই করা হচ্ছে...", এবং "বাকেট প্রস্তুত করা হচ্ছে..." ।
- ত্রুটি পরিচালনা ও সুরক্ষা ব্যবস্থা : যদি কোনো প্রস্তুতিমূলক ধাপ ব্যর্থ হয় (যেমন অপর্যাপ্ত IAM অনুমতির কারণে কোনো নন-ওনার
403 PERMISSION_DENIEDপেলে), তাহলে UI-তে একটি বিশেষ সতর্কবার্তা প্রদর্শিত হয়, যা আপনাকে একজন প্রজেক্ট ওনারের সাথে যোগাযোগ করতে নির্দেশ দেয়। সমস্যাটির সমাধান না হওয়া পর্যন্ত স্টেপার নেভিগেশন কঠোরভাবে লক করা থাকে এবং "Next" বাটন ও চূড়ান্ত "Finish and Deploy" বাটন নিষ্ক্রিয় থাকে।
- ত্রুটি পরিচালনা ও সুরক্ষা ব্যবস্থা : যদি কোনো প্রস্তুতিমূলক ধাপ ব্যর্থ হয় (যেমন অপর্যাপ্ত IAM অনুমতির কারণে কোনো নন-ওনার
- ফাইল আপলোড করুন : প্রস্তুতি সফলভাবে সম্পন্ন হলে, আপনার আর্কাইভ ফাইলটি নির্বাচন করুন অথবা ফাইল আপলোডার অংশে টেনে আনুন।
সেটিংস কনফিগার করুন : আপনার অ্যাপের রুট ডিরেক্টরি নির্দিষ্ট করুন (ডিফল্ট হলো
/)।ফিনিশ এবং ডিপ্লয়-এ ক্লিক করুন: জিপ আপলোডের জন্য স্বতন্ত্র 'ফিনিশ' বাটনটি নিষ্ক্রিয় থাকে, কারণ আর্কাইভ আপলোড করা একটি এককালীন কাজ এবং একটি কার্যকরী ব্যাকএন্ড নিশ্চিত করার জন্য এর পরপরই ডিপ্লয়মেন্ট করা আবশ্যক।
বিকল্প বি: ম্যানুয়াল রোলআউট তৈরি করা
- ডায়ালগ খুলুন : Hosting ড্যাশবোর্ডে, 'Create rollout'-এ ক্লিক করুন।
- উৎস নির্বাচন করুন : ডায়ালগের স্টেপারে ‘আপলোড এ জিপ’ নির্বাচন করুন। যদি ব্যাকএন্ডের কোনো বিদ্যমান গিটহাব সংযোগ না থাকে, তাহলে "গিটহাব" বিকল্পটি নিষ্ক্রিয় থাকে।
- প্রস্তুতি ও আপলোড : এই নির্বাচনটি একই ব্যাকগ্রাউন্ড প্রস্তুতি প্রবাহ ( "এপিআই সক্রিয় করা হচ্ছে..." , "অনুমতি পরীক্ষা করা হচ্ছে..." , এবং "বাকেট প্রস্তুত করা হচ্ছে..." ) চালু করে। সফল হলে, আপলোডার ব্যবহার করে আপনার আর্কাইভ ফাইলটি ড্র্যাগ বা নির্বাচন করুন, অ্যাপের রুট ডিরেক্টরি নির্দিষ্ট করুন, এবং বিল্ড ও রোলআউট চালু করতে 'ডিপ্লয়' (Deploy ) বাটনে ক্লিক করুন।
টেরাফর্ম ব্যবহার করে ডিপ্লয় করুন
বিল্ড প্রসেস এবং ডেপ্লয় করা এনভায়রনমেন্টের উপর যদি আপনার আরও বেশি নিয়ন্ত্রণের প্রয়োজন হয়, তবে আপনি টেরাফর্ম (Terraform) ব্যবহার করে ডেপ্লয় করতে পারেন। টেরাফর্ম আপনাকে ডিক্লারেটিভ কনফিগারেশন ফাইল ব্যবহার করে আপনার App Hosting রিসোর্সগুলো সংজ্ঞায়িত ও পরিচালনা করতে দেয় এবং আপনার সোর্স কোড থেকে বিল্ড করার জন্য App Hosting App Hosting হোস্টিং-এ আপনার নিজস্ব প্রি-বিল্ট কন্টেইনার ইমেজ ডেপ্লয় করার সুবিধা প্রদান করে।
আপনি যদি Terraform-এ নতুন হন, তাহলে “Get started with Terraform and Firebase ” দেখুন। আর যদি আপনি Terraform-এর সাথে আগে থেকেই পরিচিত হন, তাহলে নমুনা কনফিগারেশন ফাইল এবং অন্যান্য App Hosting রিসোর্স দিয়ে কাজ শুরু করতে পারেন।
CI/CD এর জন্য একটি GitHub সংযোগ স্থাপন করুন
Firebase কনসোলে কোনো ব্যাকএন্ডের সেটিংসের ডিপ্লয়মেন্ট ট্যাবে আপনি যেকোনো সময় একটি গিটহাব রিপোজিটরি সংযোগ করার বিকল্প পাবেন। এর মাধ্যমে আপনি একটি লোকাল এনভায়রনমেন্ট থেকে অ্যাপ প্রোটোটাইপ ডিপ্লয় করতে পারেন এবং প্রস্তুত হলে একটি স্বয়ংক্রিয় CI/CD পাইপলাইনে স্থানান্তরিত হতে পারেন।
এআই টুল ব্যবহার করে স্থাপন করুন
আমরা ২০২৭ সালের ২২শে মার্চ Firebase Studio বন্ধ করে দিচ্ছি । যদিও আপনার App Hosting ব্যাকএন্ডগুলো এতে প্রভাবিত হবে না, Firebase Studio এর ' পাবলিশ' বাটনটি সরিয়ে ফেলা হবে। আপনার URL পরিবর্তন না করে আপডেট প্রকাশ করা চালিয়ে যেতে, আপনার প্রজেক্টটি মাইগ্রেট করুন। কীভাবে মাইগ্রেট করবেন তা জানুন ।