অ্যাপ হোস্টিংয়ে ডেপ্লয় করার বিকল্প পদ্ধতি

বেশিরভাগ ক্ষেত্রে, আমরা Firebase কনসোল থেকে অটোমেটিক রোল-আউট বা ম্যানুয়ালি-ট্রিগার করা রোল-আউট ব্যবহার করার সাজেশন দিই। তবে, আরও কাস্টমাইজ করা ডিপ্লয়মেন্ট ফ্লো আপনার কাজে লাগতে পারে। কাস্টম ডেপ্লয়মেন্টের জন্য App Hosting-এর একাধিক বিকল্প আছে।

সোর্স থেকে ডিপ্লয় করুন

সোর্স থেকে ডিপ্লয় করার মাধ্যমে আপনি স্থায়ী GitHub কানেকশন ছাড়াই সরাসরি App Hosting-এ আপনার অ্যাপ্লিকেশনের সোর্স কোড ও কনফিগারেশন পুশ করতে পারবেন।

সোর্স থেকে ডেপ্লয় করার সময়, App Hosting আপনার সোর্স কোড Google Cloud Storage বাকেটে আপলোড করে, Cloud Build-এ আপনার ফ্রেমওয়ার্কের বিল্ড কমান্ড রান করে এবং কম্পাইল করা আর্টিফ্যাক্ট Cloud Run ও Cloud CDN-এ ডেপ্লয় করে। GitHub ডিপ্লয়মেন্টের মতো লোকাল সোর্স ডিপ্লয়মেন্টের জন্য একই বিল্ড প্রসেস ব্যবহার করা হয়। আপনার প্রোজেক্টে .gitignore ফাইল থাকলে, এর মধ্যে তালিকাভুক্ত ফাইল ও ফোল্ডার আপনার ডেপ্লয়মেন্ট থেকে বাদ দেওয়া হয়।

আপনি Firebase CLI অথবা Firebase কনসোল ব্যবহার করে লোকাল সোর্স থেকে ডেপ্লয় করতে পারবেন।

প্রয়োজনীয় IAM অনুমতি ও ইনফ্রাস্ট্রাকচার সেট-আপ

যেহেতু Firebase CLI এবং Firebase কনসোল, দুটিই আপনার সোর্স আর্কাইভ স্টোর ও তৈরি করার জন্য একই ব্যাকএন্ড ইনফ্রাস্ট্রাকচার ব্যবহার করে, তাই দুটি ডিপ্লয়মেন্ট পদ্ধতির ক্ষেত্রেই একই IAM অনুমতির প্রয়োজনীয়তা প্রযোজ্য হয়।

আপনি প্রথমবার কোনও নির্দিষ্ট লোকেশনে (অঞ্চল) ডিপ্লয় করছেন কিনা তার উপর নির্ভর করে সঠিক প্রয়োজনীয়তা নির্ধারণ করা হয়। অনুমতি সম্পর্কে আরও তথ্যের জন্য, Firebase IAM-এর ওভারভিউ এবং নির্দিষ্ট Firebase App Hosting-এর অনুমতি দেখুন।

প্রাথমিক অনবোর্ডিংয়ের জন্য অনুমতি (কোনও লোকেশনে প্রথমবার ডেপ্লয়মেন্ট)

কোনও প্রোজেক্ট লোকেশনে প্রথমবার লোকাল সোর্স ডেপ্লয়মেন্ট শুরু করা হলে, App Hosting-কে অবশ্যই আপনার আর্কাইভ স্টোর করার জন্য একটি GCS বাকেট প্রদান করতে হবে এবং সেগুলি অ্যাক্সেস করার জন্য App Hosting সার্ভিস এজেন্টকে অনুমতি দিতে হবে। যেহেতু এগুলি প্রোজেক্ট-লেভেল অ্যাডমিনিস্ট্রেটিভ টাস্ক, তাই এগুলির জন্য প্রোজেক্টের মালিক বা IAM অ্যাডমিনের অনুমতি প্রয়োজন। প্রাথমিক এডিটর বা দর্শক হিসেবে ভূমিকা পালনকারী কোনও ব্যবহারকারী এই প্রাথমিক সেট-আপ করতে পারবেন না এবং তাকে ব্লক করা হবে।

প্রয়োজনীয় সেট-আপ সংক্রান্ত অনুমতির মধ্যে এগুলি অন্তর্ভুক্ত:

  • Storage API চালু করুন: serviceusage.services.enable
  • সোর্স বাকেট তৈরি করুন: storage.buckets.create এবং storage.buckets.list
  • পরিষেবা এজেন্ট কনফিগার করুন: resourcemanager.projects.setIamPolicy-কে App Hosting রিড অ্যাক্সেস (roles/storage.objectViewer) দিন যাতে এটি বিল্ডের সময় আপলোড করা কোড ফেচ করতে পারে।

প্রাথমিক ডেপ্লয়মেন্টের জন্য, GCS বাকেট ৩০-দিনের লাইফসাইকেল সহ তৈরি করা হয়, যার পরে বাকেটটি মুছে ফেলা হয়। তবে, আপনি Cloud কনসোলে Cloud Storage -> Buckets -> Lifecycle -> Rules থেকে এই টাইমফ্রেম ম্যানেজ করতে পারবেন। অবজেক্টের লাইফসাইকেল ম্যানেজ করুন দেখুন।

পরবর্তী ডিপ্লয়মেন্টের জন্য অনুমতি (লোকেশন শুরু করার পরে)

কোনও লোকেশনের জন্য সোর্স বাকেট ও রোল বাইন্ডিং শুরু করা হয়ে গেলে (প্রাথমিক CLI ডেপ্লয়মেন্ট বা কনসোল সেট-আপের মাধ্যমে), নিয়মিত ডেভেলপার, এডিটর বা App Hosting অ্যাডমিন আপডেট ডেপ্লয় করতে পারবেন। রুটিন ডিপ্লয়মেন্টের জন্য প্রোজেক্ট-লেভেল অ্যাডমিনিস্ট্রেশন অনুমতির প্রয়োজন নেই।

অ্যাক্টিভ ডেপ্লয়মেন্ট সংক্রান্ত অনুমতির মধ্যে এগুলি অন্তর্ভুক্ত:

  • যাচাইকরণ বাকেট: storage.buckets.list
  • সোর্স আর্কাইভ আপলোড করুন: storage.objects.create
  • বিল্ড ও রোল-আউট ট্রিগার করা: স্ট্যান্ডার্ড App Hosting অনুমতি (apphosting.builds.create এবং apphosting.rollouts.create)

Firebase CLI-এর মাধ্যমে সোর্স থেকে ডিপ্লয় করা

Firebase CLI v14.4.0 এবং তার পরবর্তী ভার্সন আপনাকে আপনার অ্যাপের সোর্স কোড এবং কনফিগারেশন সরাসরি আপনার লোকাল মেশিন থেকে Firebase-এ পুশ করতে দেয়। আপনি যদি আগে থেকেই অন্যান্য Firebase ডেপ্লয়মেন্ট (যেমন, নিরাপত্তা সংক্রান্ত নিয়ম বা ফাংশন) ম্যানেজ করেন এবং একটি CLI কমান্ডের মাধ্যমে আপনার ওয়েব অ্যাপ ও ব্যাকএন্ড পরিষেবা একসাথে ডেপ্লয় করতে চান, তাহলে এটি সুবিধাজনক।

পূর্বশর্ত

  • আপনার প্রোজেক্ট অবশ্যই Blaze প্ল্যানে থাকতে হবে।
  • আপনাকে অবশ্যই firebase-tools ভার্সন 14.4.0 বা তার পরবর্তী যেকোনও ভার্সন ব্যবহার করতে হবে।

ডিপ্লয়মেন্টের ধাপ

  1. আপনার লোকাল প্রোজেক্ট ডিরেক্টরিতে firebase init apphosting রান করুন।
  2. প্রম্পট করা হলে, আগে থেকে আছে এমন প্রোজেক্ট ব্যবহার করুন বিকল্প বেছে নিন এবং আপনার টার্গেট Firebase প্রোজেক্ট বেছে নিন।
  3. ডিপ্লয় করার জন্য নতুন বা আগে থেকে থাকা ব্যাকএন্ড বেছে নিন; এই ধাপ আপনার লোকাল ডিরেক্টরির জন্য App Hosting ডিপ্লয়মেন্ট সেট-আপ করে এবং কনফিগারেশনের বিবরণ দেওয়ার জন্য প্রম্পট করে:
    • যে ব্যাকএন্ডে ডেপ্লয় করতে হবে সেটির আইডি
    • নতুন ব্যাকএন্ড তৈরি করলে, যে অঞ্চলে ডেপ্লয় করতে হবে
    • আপনার অ্যাপ্লিকেশন কোডের রুট ডিরেক্টরির পাথ
    • আপনার পছন্দের Node.js রানটাইম। ভার্সন করা রানটাইম বেছে নিলে অটোমেটিক বেস ইমেজ আপডেট (ABIU) আপনার অন্তর্নিহিত এনভায়রনমেন্টে অটোমেটিক সিকিউরিটি প্যাচ প্রয়োগ করে।
  4. 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 Console-এর মাধ্যমে ডিপ্লয় করা (জিপ আপলোড)

Firebase কনসোল সরাসরি একটি কম্প্রেস করা সোর্স আর্কাইভ আপলোড করে অ্যাপ্লিকেশন ডিপ্লয় করার জন্য একটি গ্রাফিক্যাল ইন্টারফেস প্রদান করে। এটি GitHub কানেকশন ফ্লোয়ের বিকল্প হিসেবে কাজ করে, যেখানে আপনি GitHub ব্যবহার করতে চান না অথবা অন্য কোনও CI/CD সেট-আপ ব্যবহার করতে চান।

প্রাথমিক ব্যাকএন্ড তৈরি করার সময় বা আগে থেকে থাকা ব্যাকএন্ডে ম্যানুয়াল রোল-আউট তৈরি করার সময় আর্কাইভ আপলোড করা যেতে পারে, এর মধ্যে Firebase CLI ব্যবহার করে প্রাথমিকভাবে ডেপ্লয় করা ব্যাকএন্ডও অন্তর্ভুক্ত।

কাজ করে এমন ফর্ম্যাট

কনসোল আপলোডার নেটিভভাবে দুটি কম্প্রেস করা আর্কাইভ ফর্ম্যাট যাচাই করে এবং গ্রহণ করে:

  • .zip
  • .tgz

এই ফর্ম্যাটগুলি ফাইল আপলোডারের বিবরণ টেক্সটে স্পষ্টভাবে দেখানো হয়।

ডিপ্লয়মেন্টের ধাপ

বিকল্প ক: প্রাথমিক ব্যাকএন্ড অনবোর্ডিংয়ের সময়
  1. সোর্স বেছে নিন: ব্যাকএন্ড ক্রিয়েশন উইজার্ডে, "আপনি কীভাবে আপনার অ্যাপ ইমপোর্ট করতে চান?" ধাপ চলাকালীন একটি জিপ ফাইল আপলোড করুন বিকল্প বেছে নিন।
  2. অনবোর্ডিংয়ের প্রস্তুতি: "পরবর্তী" বিকল্পে ক্লিক করলে ব্যাকগ্রাউন্ডে প্রস্তুতির ফ্লো ট্রিগার হয়, যা ক্রমানুসারে Storage API চালু করে, সঠিক ভূমিকা সেট-আপ করা হয়েছে কিনা তা নিশ্চিত করে এবং বাকেট আপসার্ট করে। UI-তে ডায়নামিক স্ট্যাটাস মেসেজ সহ লোডিং স্পিনার দেখানো হয়: "API চালু করা হচ্ছে...", "অনুমতি চেক করা হচ্ছে...", এবং "বাকেট প্রস্তুত করা হচ্ছে..."।
    • সমস্যার সমাধান ও গার্ডরেল: প্রস্তুতির কোনও ধাপ সম্পূর্ণ না হলে (যেমন, অপর্যাপ্ত IAM অনুমতির কারণে মালিক নন এমন কেউ 403 PERMISSION_DENIED পেলে), UI-তে একটি নির্দিষ্ট সতর্কতা দেখানো হয়, যেখানে আপনাকে প্রোজেক্টের মালিকের সাথে যোগাযোগ করার নির্দেশ দেওয়া হয়। স্টেপার নেভিগেশন কঠোরভাবে লক করা আছে এবং সমস্যাটি সমাধান না হওয়া পর্যন্ত "পরবর্তী" বোতাম এবং চূড়ান্ত "শেষ করুন এবং ডিপ্লয় করুন" বোতাম বন্ধ থাকবে।
  3. ফাইল আপলোড করা: প্রস্তুতি সম্পূর্ণ হয়ে গেলে, ফাইল আপলোডার কম্পোনেন্টে আপনার আর্কাইভ ফাইল বেছে নিন বা টেনে এনে রাখুন।
  4. সেটিংস কনফিগার করুন: আপনার অ্যাপ রুট ডিরেক্টরি (ডিফল্ট হিসেবে /) উল্লেখ করুন।

  5. শেষ করুন ও ডিপ্লয় করুন বিকল্পে ক্লিক করুন: জিপ আপলোডের জন্য স্ট্যান্ডঅ্যালোন "শেষ করুন" বোতামটি বন্ধ করা আছে কারণ আর্কাইভ আপলোড করা একটি এককালীন অ্যাকশন এবং ফাংশনাল ব্যাকএন্ড নিশ্চিত করার জন্য অবিলম্বে ডিপ্লয়মেন্ট করতে হবে।

বিকল্প খ: ম্যানুয়াল রোল-আউট তৈরি করা
  1. ডায়ালগ খুলুন: App Hosting ড্যাশবোর্ডে, রোলআউট তৈরি করুন বিকল্পে ক্লিক করুন।
  2. সোর্স বেছে নিন: ডায়ালগের স্টেপারে জিপ আপলোড করুন বিকল্প বেছে নিন। ব্যাকএন্ডে আগে থেকে কোনও GitHub কানেকশন না থাকলে, "GitHub" বিকল্প বন্ধ থাকে।
  3. প্রস্তুতি ও আপলোড: বেছে নেওয়ার ফলে একই ব্যাকগ্রাউন্ড প্রস্তুতি ফ্লো ("API চালু করা হচ্ছে...", "অনুমতি চেক করা হচ্ছে..." এবং "বাকেট তৈরি করা হচ্ছে...")। এটি হয়ে গেলে, আপলোডার ব্যবহার করে আপনার আর্কাইভ ফাইল টেনে আনুন বা বেছে নিন, অ্যাপ রুট ডিরেক্টরি নির্দিষ্ট করুন এবং বিল্ড ও রোল-আউট ট্রিগার করতে ডিপ্লয় করুন বিকল্পে ক্লিক করুন।

Terraform ব্যবহার করে ডিপ্লয় করুন

বিল্ড প্রসেস ও ডিপ্লয় করা এনভায়রনমেন্টের উপর আরও বেশি কন্ট্রোল চাইলে, আপনি Terraform ব্যবহার করে ডিপ্লয় করতে পারবেন। Terraform আপনাকে ডিক্লারেটিভ কনফিগারেশন ফাইল ব্যবহার করে আপনার App Hosting রিসোর্স সংজ্ঞায়িত এবং ম্যানেজ করতে দেয় এবং আপনার সোর্স কোড থেকে তৈরি করার জন্য App Hosting-এর উপর নির্ভর করার পরিবর্তে সরাসরি App Hosting-এ আপনার নিজস্ব প্রি-বিল্ট কন্টেইনার ইমেজ ডিপ্লয় করার ক্ষমতা প্রদান করে।

আপনি Terraform-এ নতুন হলে, Terraform ও Firebase-এর ব্যবহার শুরু করুন দেখুন। আপনি আগে থেকেই Terraform সম্পর্কে জানলে, স্যাম্পেল কনফিগারেশন ফাইল ও অন্যান্য App Hosting রিসোর্স ব্যবহার করে শুরু করতে পারবেন।

CI/CD-এর জন্য GitHub কানেকশন সেট-আপ করা

Firebase কনসোলে ব্যাকএন্ডের সেটিংসের ডেপ্লয়মেন্ট ট্যাবে যেকোনও সময় GitHub রিপোজিটরি কানেক্ট করার বিকল্প আপনার কাছে আছে। এটি আপনাকে লোকাল এনভায়রনমেন্ট থেকে অ্যাপ প্রোটোটাইপ ডিপ্লয় করতে দেয় এবং তারপর আপনি রেডি হলে অটোমেটেড CI/CD পাইপলাইনে ট্রানজিশন করতে দেয়।

AI টুল ব্যবহার করে ডিপ্লয় করুন

২২ মার্চ, ২০২৭ থেকে Firebase Studio বন্ধ করে দেওয়া হচ্ছে। আপনার App Hosting ব্যাকএন্ড প্রভাবিত না হলেও, Firebase Studio-এ প্রকাশ করুন বোতামটি সরিয়ে দেওয়া হবে। আপনার URL পরিবর্তন না করে আপডেট প্রকাশ করা চালিয়ে যেতে, আপনার প্রোজেক্ট মাইগ্রেট করুন। কীভাবে মাইগ্রেট করবেন তা জানুন।