একটি কোডবেস থেকে একাধিক এনভায়রনমেন্ট ডিপ্লয় করুন

একই কোডবেস থেকে একাধিক এনভায়রনমেন্ট ডিপ্লয় করা সাধারণ ব্যাপার, যার প্রত্যেকটির কনফিগারেশন সামান্য আলাদা হয়। যেমন, আপনি হয়ত স্টেজিং এনভায়রনমেন্টে কম সিপিইউ ও র‍্যাম অ্যাসাইন করতে চান অথবা প্রোডাকশন এনভায়রনমেন্টে অন্তত ১টি ইনস্ট্যান্স অ্যাক্টিভ ও অনুরোধের উত্তর দেওয়ার জন্য রেডি রাখতে চান। আপনি যে পরিবেশ ও রিসোর্স ব্যবহার করতে চান তার উপর নির্ভর করে আপনি বিভিন্ন এনভায়রনমেন্ট ভেরিয়েবল ও সিক্রেট নির্দিষ্ট করতে চাইতে পারেন।

এই নির্দেশিকা থেকে আপনি জানতে পারবেন যে কীভাবে প্রোডাকশন ও স্টেজিং এনভায়রনমেন্ট ডিপ্লয় করতে হয়, প্রতিটি আলাদা Firebase প্রোজেক্টে। একই নীতি অনুসরণ করে, আপনি অন্যান্য বিভিন্ন ধরনের পরিবেশে ডেপ্লয় করতে পারেন। এনভায়রনমেন্ট সম্পর্কে আরও জানতে, এনভায়রনমেন্টের ওভারভিউ এবং Firebase প্রজেক্ট সেট-আপ করার জন্য সাধারণ পেশাদার পদ্ধতি দেখুন।

পূর্বশর্ত

  • আপনার অ্যাপ্লিকেশন কোড আগে থেকেই GitHub-এ স্টোর করা আছে।
  • আপনি আগেই আপনার প্রতিটি এনভায়রনমেন্টের জন্য আলাদা প্রোজেক্ট তৈরি করেছেন—যেমন my-production-firebase-project এবং my-staging-firebase-project। আপনার প্রোডাকশন Firebase প্রোজেক্টকে "প্রোডাকশন" এনভায়রনমেন্ট টাইপের সাথে ট্যাগ করতে ভুলবেন না।
  • প্রতিটি প্রোজেক্টে, আপনি একটি App Hosting ব্যাকএন্ড তৈরি করেছেন, যেখানে লাইভ ব্রাঞ্চটি আপনি যে GitHub ব্রাঞ্চে ডিপ্লয় করতে চান (যেমন main) সেখানে সেট করা আছে। আরও তথ্যের জন্য App Hosting ব্যবহার শুরু করুন দেখুন।

ধাপ ০: apphosting.yaml-এ ডিফল্ট কনফিগারেশন তৈরি করুন

App Hosting আপনার অ্যাপের রানটাইম সেটিংস (সিপিইউ, কনকারেন্সি, মেমরি লিমিট ইত্যাদি) এবং এনভায়রনমেন্ট ভেরিয়েবল ম্যানেজ করার জন্য apphosting.yaml নামক কনফিগারেশন ফাইলকে সাপোর্ট করে। এটি Cloud Secret Manager-এর মাধ্যমে ম্যানেজ করা সিক্রেটের রেফারেন্সকেও সাপোর্ট করে, যার ফলে সোর্স কন্ট্রোল চেক করা নিরাপদ হয়। আরও তথ্যের জন্য, ব্যাকএন্ড কনফিগার করুন দেখুন।

শুরু করতে, আপনার অ্যাপের রুট ডিরেক্টরিতে একটি apphosting.yaml ফাইল তৈরি করুন। এটি হল ফলব্যাক কনফিগারেশন ফাইল যা এনভায়রনমেন্ট-নির্দিষ্ট কনফিগারেশন ফাইল খুঁজে না পাওয়া গেলে ব্যবহার করা হয়। apphosting.yaml-এ সেভ করা ভ্যালু ডিফল্ট হতে হবে যা সব এনভায়রনমেন্টে ব্যবহার করার জন্য নিরাপদ।

পরবর্তী বিভাগে ব্যাখ্যা করা হয়েছে যে কীভাবে নির্দিষ্ট পরিবেশের জন্য apphosting.yaml-এ ডিফল্ট ভ্যালু ওভাররাইড করতে হয়। এই উদাহরণ ফ্লো একটি স্টেজিং এনভায়রনমেন্ট তৈরি করে।

ধাপ ১: এনভায়রনমেন্টের নাম সেট করুন

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

আপনার ব্যাকএন্ডের এনভায়রনমেন্টের নাম সেট করতে,

  1. Firebase কনসোলে, আপনার স্টেজিং প্রোজেক্ট বেছে নিন (এই উদাহরণে, my-staging-firebase-project)।
  2. হোস্টিং ও সার্ভারলেস > App Hosting বিকল্পে নেভিগেট করুন।
  3. আপনার বেছে নেওয়া ব্যাকএন্ডে দেখুন বিকল্পে ক্লিক করুন।
  4. সেটিংস ট্যাবে, এনভায়রনমেন্ট বেছে নিন।
  5. এনভায়রনমেন্টের নাম বিকল্পে আপনার এনভায়রনমেন্টের নাম লিখুন। আপনি নিজের পছন্দমতো পরিবেশের নাম দিতে পারেন। এই উদাহরণে, এটি হল স্টেজিং।
  6. সেভ করুন বিকল্পে ক্লিক করুন।

আপনার ব্যাকএন্ডের জন্য App Hosting রোলআউট ট্রিগার করা হলে (git পুশ বা Firebase কনসোলের মাধ্যমে ম্যানুয়ালি), App Hosting apphosting.yaml-এ ফিরে যাওয়ার আগে apphosting.ENVIRONMENT_NAME.yaml ফাইল চেক করবে।

ধাপ ২: আপনার এনভায়রনমেন্ট-নির্দিষ্ট apphosting.yaml ফাইল তৈরি করুন

আপনার এনভায়রনমেন্ট-নির্দিষ্ট কনফিগারেশনের জন্য, এনভায়রনমেন্ট-নির্দিষ্ট ওভাররাইড উল্লেখ করতে apphosting.ENVIRONMENT_NAME.yaml নামের একটি ফাইল তৈরি করুন। এই ফাইলের ফর্ম্যাট ডিফল্ট apphosting.yaml-এর মতো হতে হবে এবং এটি আপনার অ্যাপের রুট ডিরেক্টরিতে apphosting.yaml-এর সাথে থাকতে হবে।

বিল্ড করার সময়, App Hosting এই দুটি ফাইল মার্জ করে, যেখানে বেস apphosting.yaml ফাইলের চেয়ে এনভায়রনমেন্ট-নির্দিষ্ট YAML ফাইলের ভ্যালুকে অগ্রাধিকার দেওয়া হয়।

এই উদাহরণে, আপনি অ্যাপের রুট ডিরেক্টরিতে apphosting.staging.yaml নামের একটি ফাইল তৈরি করবেন:


runConfig:
  cpu: 1
  memoryMiB: 512
  concurrency: 5

env:
-   variable: API_URL
    value: api.staging.service.com
    availability:
      -   BUILD

-   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

ধরুন, আপনার কাছে আগে থেকেই একটি apphosting.yaml আছে যা দেখতে এইরকম:

runConfig:
  cpu: 3
  memoryMiB: 1024
  maxInstances: 4
  minInstances: 0
  concurrency: 100

env:
-   variable: API_URL
    value: api.service.com
    availability:
      -   BUILD
      -   RUNTIME

-   variable: STORAGE_BUCKET
    value: mybucket.firebasestorage.app
    availability:
      -   RUNTIME

-   variable: API_KEY
    secret: secretIDforAPI

মার্জ করা ফাইনাল আউটপুট, যা আপনি Cloud Build লগে দেখতে পাবেন, সেটি এইরকম দেখতে হবে:

runConfig:
  cpu: 1
  memoryMiB: 512
  maxInstances: 4
  minInstances: 0
  concurrency: 5

env:
-   variable: API_URL
    value: api.staging.service.com
    availability:
      -   BUILD

-   variable: STORAGE_BUCKET
    value: mybucket.firebasestorage.app
    availability:
      -   RUNTIME

-   variable: API_KEY
    secret: secretIDforAPI

-   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

মনে রাখবেন যে CPU-এর মতো নির্দিষ্ট runConfig ভ্যালু ওভাররাইট করা হয়েছে এবং এর সাথে ওভারল্যাপ করা এনভায়রনমেন্ট ভেরিয়েবলও ওভাররাইট করা হয়েছে।

ধাপ ৩: আপনার কোডবেস ডিপ্লয় করুন

আপনার এনভায়রনমেন্ট-নির্দিষ্ট apphosting.ENVIRONMENT_NAME.yaml ফাইল এডিট করা হয়ে গেলে, GitHub-এ আপনার ফাইল পুশ করুন:

$ git add apphosting.<ENVIRONMENT_NAME>.yaml
$ git commit -m "Added environment specific yaml file"
$ git push

এই এনভায়রনমেন্টের নামের সাথে ট্যাগ করা যেকোনও ব্যাকএন্ড, আপনার নির্দিষ্ট করা সংশ্লিষ্ট YAML ফাইলে নির্দিষ্ট ওভাররাইড ভ্যালু ব্যবহার করবে এবং কোনও ভ্যালু খুঁজে না পাওয়া গেলে apphosting.yaml-এ ফিরে যাবে। সংশ্লিষ্ট এনভায়রনমেন্টের নাম ছাড়া ব্যাকএন্ডের জন্য, আপনি apphosting.yaml ব্যবহার করা চালিয়ে যেতে পারেন।

পরবর্তী ধাপ