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

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

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

پیش‌نیازها

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

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

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

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

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

مرحله ۱: تنظیم نام محیط

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

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

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

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

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

برای پیکربندی مختص محیط خود، فایلی با نام apphosting. ENVIRONMENT_NAME .yaml ایجاد کنید تا بتوانید overrideهای مختص محیط را مشخص کنید. این فایل فرمتی مشابه 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.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

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

مرحله ۳: کدبیس خود را مستقر کنید

پس از اتمام ویرایش فایل 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 برمی‌گردد. برای backendهایی که نام محیط مرتبطی ندارند، می‌توانید به استفاده از apphosting.yaml ادامه دهید.

مراحل بعدی