چندین محیط را از یک پایگاه کد مستقر کنید

معمول است که چندین محیط از یک پایگاه کد مستقر شده باشند که هر کدام با پیکربندی کمی متفاوت هستند. به عنوان مثال، ممکن است بخواهید CPU و RAM کمتری را به محیط استیجینگ خود اختصاص دهید، یا ممکن است بخواهید مطمئن شوید که محیط تولید شما حداقل 1 نمونه را فعال و آماده برای ارائه درخواست ها نگه می دارد. همچنین ممکن است بخواهید بسته به محیط و منابعی که می خواهید استفاده کنید، متغیرها و اسرار محیطی مختلفی را مشخص کنید.

این راهنما نحوه استقرار یک محیط تولید و صحنه سازی را، هر کدام در یک پروژه Firebase جداگانه، شرح می دهد. با پیروی از همان اصول، می توانید در انواع مختلف محیط های دیگر مستقر شوید. برای کسب اطلاعات بیشتر در مورد محیط‌ها، مرور کلی محیط‌ها و بهترین روش‌های عمومی برای راه‌اندازی پروژه‌های Firebase را بررسی کنید.

پیش نیازها

  • کد برنامه شما قبلاً در GitHub ذخیره شده است.
  • شما قبلاً یک پروژه مجزا برای هر یک از محیط های خود ایجاد کرده اید - برای مثال my-production-firebase-project و my-staging-firebase-project . مطمئن شوید که پروژه Firebase تولیدی خود را با نوع محیط "production" برچسب گذاری کنید.
  • در هر پروژه، یک App Hosting Backend ایجاد کرده‌اید که شاخه زنده آن به شاخه GitHub که می‌خواهید مستقر کنید (مانند main ) تنظیم شده است. برای اطلاعات بیشتر به شروع با App Hosting مراجعه کنید.

مرحله 0: یک پیکربندی پیش فرض در apphosting.yaml ایجاد کنید

App Hosting از یک فایل پیکربندی به نام apphosting.yaml برای مدیریت تنظیمات زمان اجرا (CPU، همزمانی، محدودیت های حافظه و غیره) و متغیرهای محیطی برنامه شما پشتیبانی می کند. همچنین از ارجاع به اسرار مدیریت شده با Cloud Secret Manager پشتیبانی می کند و بررسی منبع کنترل را ایمن می کند. برای اطلاعات بیشتر، پیکربندی یک باطن را ببینید.

برای شروع، یک فایل apphosting.yaml در فهرست اصلی برنامه خود ایجاد کنید. این فایل پیکربندی بازگشتی است که زمانی استفاده می شود که یک فایل پیکربندی خاص محیطی پیدا نشود. مقادیر ذخیره شده در apphosting.yaml باید پیش فرض هایی باشند که برای همه محیط ها امن باشند.

بخش های بعدی نحوه نادیده گرفتن مقادیر پیش فرض در apphosting.yaml را برای محیط های خاص توضیح می دهد. این جریان مثال یک محیط صحنه سازی را ایجاد می کند.

مرحله 1: نام محیط را تنظیم کنید

هر پشتیبان App Hosting دارای یک تنظیم نام محیطی است. این فیلد برای نگاشت باطن شما به یک فایل پیکربندی خاص محیطی استفاده می شود و در هر زمان می توان آن را تغییر داد. شما فقط می توانید یک نام محیط را در هر باطن تنظیم کنید.

برای تنظیم نام محیط باطن خود،

  1. در کنسول Firebase، پروژه مرحله‌بندی خود را انتخاب کنید (در این مثال، my-staging-firebase-project).
  2. App Hosting از ناوبری سمت چپ انتخاب کنید.
  3. روی مشاهده داشبورد در باطن انتخابی خود کلیک کنید.
  4. در برگه تنظیمات ، Deployment را انتخاب کنید.
  5. در قسمت Environment name، نام محیط خود را وارد کنید. می توانید نام محیط را هر چه دوست دارید بگذارید. در این مثال، صحنه سازی است.
  6. روی ذخیره کلیک کنید.

هنگامی که یک App Hosting برای Backend شما راه اندازی می شود (چه در git push یا به صورت دستی از طریق کنسول)، App Hosting برای apphosting. ENVIRONMENT_NAME .yaml فایل apphosting. ENVIRONMENT_NAME .yaml قبل از بازگشت به apphosting.yaml .

مرحله 2: فایل apphosting.yaml مخصوص محیط خود را ایجاد کنید

برای پیکربندی خاص محیط خود، یک فایل با نام apphosting. ENVIRONMENT_NAME .yaml به منظور تعیین لغوهای خاص محیطی. این فایل همان قالب پیش‌فرض apphosting.yaml را دارد و باید در فهرست اصلی برنامه شما در کنار apphosting.yaml قرار گیرد.

در زمان ساخت، App Hosting این دو فایل را با اولویت مقادیر موجود در فایل YAML مخصوص محیط نسبت به فایل پایه apphosting.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.appspot.com
    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.appspot.com
    availability:
      -   RUNTIME

  -   variable: API_KEY
    secret: secretIDforAPI

  -   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

توجه داشته باشید که مقادیر خاصی runConfig مانند CPU و همچنین متغیرهای محیطی با هم تداخل دارند، رونویسی شده است.

مرحله 3: پایگاه کد خود را مستقر کنید

هنگامی که ویرایش apphosting. ENVIRONMENT_NAME .yaml فایل apphosting. ENVIRONMENT_NAME .yaml ، فایل خود را به GitHub فشار دهید:

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

هر Backendهایی که با این نام محیط برچسب گذاری شده اند، از مقادیر نادیده گرفتن خاصی که در فایل YAML مربوطه خود مشخص کرده اید استفاده می کنند و زمانی که مقداری پیدا نشد به apphosting.yaml برمی گردد. برای بک‌اندهای بدون نام محیط مرتبط، می‌توانید به استفاده از apphosting.yaml ادامه دهید.

مراحل بعدی

،

معمول است که چندین محیط از یک پایگاه کد مستقر شده باشند که هر کدام با پیکربندی کمی متفاوت هستند. به عنوان مثال، ممکن است بخواهید CPU و RAM کمتری را به محیط استیجینگ خود اختصاص دهید، یا ممکن است بخواهید مطمئن شوید که محیط تولید شما حداقل 1 نمونه را فعال و آماده برای ارائه درخواست ها نگه می دارد. همچنین ممکن است بخواهید بسته به محیط و منابعی که می خواهید استفاده کنید، متغیرها و اسرار محیطی مختلفی را مشخص کنید.

این راهنما نحوه استقرار یک محیط تولید و صحنه سازی را، هر کدام در یک پروژه Firebase جداگانه، شرح می دهد. با پیروی از همان اصول، می توانید در انواع مختلف محیط های دیگر مستقر شوید. برای کسب اطلاعات بیشتر در مورد محیط‌ها، مرور کلی محیط‌ها و بهترین روش‌های عمومی برای راه‌اندازی پروژه‌های Firebase را بررسی کنید.

پیش نیازها

  • کد برنامه شما قبلاً در GitHub ذخیره شده است.
  • شما قبلاً یک پروژه مجزا برای هر یک از محیط های خود ایجاد کرده اید - برای مثال my-production-firebase-project و my-staging-firebase-project . مطمئن شوید که پروژه Firebase تولیدی خود را با نوع محیط "production" برچسب گذاری کنید.
  • در هر پروژه، یک App Hosting Backend ایجاد کرده‌اید که شاخه زنده آن به شاخه GitHub که می‌خواهید مستقر کنید (مانند main ) تنظیم شده است. برای اطلاعات بیشتر به شروع با App Hosting مراجعه کنید.

مرحله 0: یک پیکربندی پیش فرض در apphosting.yaml ایجاد کنید

App Hosting از یک فایل پیکربندی به نام apphosting.yaml برای مدیریت تنظیمات زمان اجرا (CPU، همزمانی، محدودیت های حافظه و غیره) و متغیرهای محیطی برنامه شما پشتیبانی می کند. همچنین از ارجاع به اسرار مدیریت شده با Cloud Secret Manager پشتیبانی می کند و بررسی منبع کنترل را ایمن می کند. برای اطلاعات بیشتر، پیکربندی یک باطن را ببینید.

برای شروع، یک فایل apphosting.yaml در فهرست اصلی برنامه خود ایجاد کنید. این فایل پیکربندی بازگشتی است که زمانی استفاده می شود که یک فایل پیکربندی خاص محیطی پیدا نشود. مقادیر ذخیره شده در apphosting.yaml باید پیش فرض هایی باشند که برای همه محیط ها امن باشند.

بخش های بعدی نحوه نادیده گرفتن مقادیر پیش فرض در apphosting.yaml را برای محیط های خاص توضیح می دهد. این جریان مثال یک محیط صحنه سازی را ایجاد می کند.

مرحله 1: نام محیط را تنظیم کنید

هر پشتیبان App Hosting دارای یک تنظیم نام محیطی است. این فیلد برای نگاشت باطن شما به یک فایل پیکربندی خاص محیطی استفاده می شود و در هر زمان می توان آن را تغییر داد. شما فقط می توانید یک نام محیط را در هر باطن تنظیم کنید.

برای تنظیم نام محیط باطن خود،

  1. در کنسول Firebase، پروژه مرحله‌بندی خود را انتخاب کنید (در این مثال، my-staging-firebase-project).
  2. App Hosting از ناوبری سمت چپ انتخاب کنید.
  3. روی مشاهده داشبورد در باطن انتخابی خود کلیک کنید.
  4. در برگه تنظیمات ، Deployment را انتخاب کنید.
  5. در قسمت Environment name، نام محیط خود را وارد کنید. می توانید نام محیط را هر چه دوست دارید بگذارید. در این مثال، صحنه سازی است.
  6. روی ذخیره کلیک کنید.

هنگامی که یک App Hosting برای Backend شما راه اندازی می شود (چه در git push یا به صورت دستی از طریق کنسول)، App Hosting برای apphosting. ENVIRONMENT_NAME .yaml فایل apphosting. ENVIRONMENT_NAME .yaml قبل از بازگشت به apphosting.yaml .

مرحله 2: فایل apphosting.yaml مخصوص محیط خود را ایجاد کنید

برای پیکربندی خاص محیط خود، یک فایل با نام apphosting. ENVIRONMENT_NAME .yaml به منظور تعیین لغوهای خاص محیطی. این فایل همان قالب پیش‌فرض apphosting.yaml را دارد و باید در فهرست اصلی برنامه شما در کنار apphosting.yaml قرار گیرد.

در زمان ساخت، App Hosting این دو فایل را با اولویت مقادیر موجود در فایل YAML مخصوص محیط نسبت به فایل پایه apphosting.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.appspot.com
    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.appspot.com
    availability:
      -   RUNTIME

  -   variable: API_KEY
    secret: secretIDforAPI

  -   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

توجه داشته باشید که مقادیر خاصی runConfig مانند CPU و همچنین متغیرهای محیطی با هم تداخل دارند، رونویسی شده است.

مرحله 3: پایگاه کد خود را مستقر کنید

هنگامی که ویرایش apphosting. ENVIRONMENT_NAME .yaml فایل apphosting. ENVIRONMENT_NAME .yaml ، فایل خود را به GitHub فشار دهید:

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

هر Backendهایی که با این نام محیط برچسب گذاری شده اند، از مقادیر نادیده گرفتن خاصی که در فایل YAML مربوطه خود مشخص کرده اید استفاده می کنند و زمانی که مقداری پیدا نشد به apphosting.yaml برمی گردد. برای بک‌اندهای بدون نام محیط مرتبط، می‌توانید به استفاده از apphosting.yaml ادامه دهید.

مراحل بعدی