একটি কোডবেস থেকে একাধিক পরিবেশ স্থাপন করুন

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

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

পূর্বশর্ত

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

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

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

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

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

ধাপ ১: পরিবেশের নাম নির্ধারণ করুন

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

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

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

যখন আপনার ব্যাকএন্ডের জন্য App Hosting রোলআউট ট্রিগার করা হয় (গিট পুশ করার মাধ্যমে অথবা কনসোলের মাধ্যমে ম্যানুয়ালি), তখন apphosting.yaml ফাইলে ফিরে যাওয়ার আগে App Hosting একটি 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

চূড়ান্ত একত্রিত আউটপুট, যা আপনি আপনার ক্লাউড বিল্ড লগ-এ দেখতে পাবেন, তা দেখতে এইরকম হবে:

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 ফাইলটি সম্পাদনা করা শেষ হলে, ফাইলটি গিটহাবে পুশ করুন:

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

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

পরবর্তী পদক্ষেপ