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

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

সোর্স থেকে ডেপ্লয় করা

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

সোর্স থেকে ডেপ্লয় করার সময়, 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 অবশ্যই আপনার আর্কাইভ স্টোর করার জন্য একটি 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 Storage -> Buckets -> Lifecycle -> Rules বিকল্পে গিয়ে Cloud console-এ এই সময়সীমা ম্যানেজ করতে পারবেন। অবজেক্ট ম্যানেজ করা লাইফসাইকেল দেখুন।

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

কোনও লোকেশনের জন্য সোর্স বাকেট ও রোল বাইন্ডিং চালু করা হলে (প্রাথমিক 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 কনসোলের মাধ্যমে ডিপ্লয় করা (Zip ফাইল আপলোড)

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

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

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

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

  • .zip
  • .tgz

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

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

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

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

বিকল্প খ: ম্যানুয়াল রোল-আউট তৈরি করা
  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 পরিবর্তন না করেই আপডেট প্রকাশ করা চালিয়ে যেতে, আপনার প্রোজেক্ট মাইগ্রেট করুন। কীভাবে মাইগ্রেট করতে হয় তা জানুন।