استقرار برنامه خود را به صورت محلی آزمایش کنید

می‌توانید با استفاده از شبیه‌ساز App Hosting ، که بخشی از مجموعه شبیه‌ساز محلی Firebase است، آزمایش‌های محلی برنامه خود را قبل از استقرار App Hosting انجام دهید.

قبل از استفاده از شبیه‌ساز App Hosting ، مطمئن شوید که گردش کار کلی Firebase Local Emulator Suite را درک کرده‌اید ، و Local Emulator Suite نصب و پیکربندی کرده و دستورات CLI آن را مرور می‌کنید.

این موضوع فرض می‌کند که شما قبلاً با App Hosting آشنا هستید. در صورت نیاز، مقدمه App Hosting و سایر مطالب را مرور کنید تا به شما در درک نحوه عملکرد App Hosting کمک کند.

با شبیه ساز App Hosting چه کاری می توانم انجام دهم؟

شبیه ساز App Hosting به شما امکان می دهد برنامه های وب خود را به صورت محلی آزمایش و اصلاح کنید. این می تواند روند توسعه شما را ساده کند و کیفیت برنامه های وب ساخته شده با استفاده از Firebase و مستقر در App Hosting را افزایش دهد.

شبیه ساز App Hosting :

  1. به شما امکان می دهد برنامه وب خود را به صورت محلی اجرا کنید، با متغیرهای محیطی و اسرار تعریف شده در فایل های پیکربندی apphosting.yaml .
  2. می تواند متغیرها و اسرار محیط را برای استفاده در شبیه ساز با فایل apphosting.emulator.yaml لغو کند.
  3. قابل استفاده در کنار سایر شبیه سازهای Firebase. اگر از Firestore، Auth یا هر شبیه‌ساز دیگری استفاده می‌کنید، Local Emulator Suite تضمین می‌کند که این شبیه‌سازها ابتدا قبل از شبیه‌ساز App Hosting شروع به کار می‌کنند.

شبیه ساز را پیکربندی کنید

برای شروع، Local Emulator Suite همانطور که در Install، پیکربندی و ادغام Local Emulator Suite توضیح داده شد، نصب و مقداردهی اولیه کنید. علاوه بر هر شبیه‌ساز Firebase دیگری که می‌خواهید راه‌اندازی کنید، حتما App Hosting Emulator انتخاب کنید. CLI برخی از مقادیر شبیه‌ساز App Hosting از شما می‌خواهد، از جمله:

  • دایرکتوری ریشه برنامه شما نسبت به پروژه؛ این مهم است اگر از monorepos با App Hosting استفاده می کنید.
  • این که آیا می خواهید ارزشی را برای توسعه محلی نادیده بگیرید.
firebase init emulators
=== Emulators Setup
? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ App Hosting Emulator
 ◯ Firestore Emulator
 ◯ Database Emulator
 ◯ Hosting Emulator
 ◯ Pub/Sub Emulator
 ◯ Storage Emulator
 ◯ Eventarc Emulator
(Move up and down to reveal more choices)

? Specify your app's root directory relative to your project (./)

? The App Hosting emulator uses a file called apphosting.emulator.yaml to
override values in apphosting.yaml for local testing. This codebase does not
have one, would you like to create it? (Y/n)

? Which environment variables would you like to override? (Press <space> to
select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ MEMCACHE_ADDR
 ◯ API_KEY

? What new value would you like for plaintext MEMCACHE_ADDR?

? What would you like to name the secret reference for API_KEY? (test-api-key)

? What new value would you like for secret TESTKEY [input is hidden]? [input is hidden]

? Your config has secret values. Please provide a comma-separated list of users
or groups who should have access to secrets for local development:

✔  Successfully set IAM bindings on secret test-api-key.

هر مقداری که در این جریان راه‌اندازی ارائه می‌کنید برای به‌روزرسانی پیکربندی شبیه‌ساز App Hosting در firebase.json استفاده می‌شود. همچنین می‌توانید با به‌روزرسانی مستقیم firebase.json شبیه‌ساز میزبانی برنامه را پیکربندی کنید. طرح شبیه ساز میزبانی برنامه به شرح زیر است:

{
  ...
  "emulators": {
    "apphosting": {
      "startCommand": <command> [optional]
      "rootDirectory": <path> [optional]
      }
    }
  }
  • startCommand به صورت خودکار تولید و تنظیم می شود که شبیه ساز اولیه شود. اگر ارائه نشده باشد، شبیه ساز فرمان توسعه دهنده مدیریت بسته شما را شناسایی و اجرا می کند.
  • rootDirectory برای پشتیبانی از تنظیمات پروژه monorepo استفاده می شود. اگر برنامه وب شما در یک زیر شاخه است، باید مسیر آن دایرکتوری را نسبت به ریشه (محل firebase.json ) ارائه دهید.

مدیریت شبیه سازی

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

فایل apphosting.emulator.yaml به گونه ای طراحی شده است که بتوان آن را به اشتراک گذاشت و با همکاران به اشتراک گذاشت. برای کمک به اطمینان از عدم ارسال تصادفی داده‌های حساس به مخازن منبع، هر متغیر محیطی که در apphosting.yaml مخفی است باید در apphosting.emulator.yaml نیز مخفی باشد. اگر یک راز نیازی به تغییر بین تولید و توسعه محلی نداشته باشد (مثلاً یک کلید API Gemini)، نیازی به افزودن آن به apphosting.emulator.yaml نیست. در عوض به تیم خود اجازه دسترسی به راز را بدهید .

اگر برنامه شما از اسرار زیادی استفاده می کند (به عنوان مثال، کلیدهای API برای سه سرویس مختلف، با مقادیر متفاوت برای تولید، مرحله بندی و توسعه محلی) ممکن است از سطح رایگان Cloud Secret Manager فراتر رفته و به ازای هر راز اضافی 0.06 دلار در ماه بپردازید. اگر ترجیح می دهید پیکربندی محلی را خارج از کنترل منبع مدیریت کنید تا از این هزینه اجتناب کنید، می توانید از فایل قدیمی apphosting.local.yaml استفاده کنید. برخلاف apphosting.emulator.yaml این فایل مجاز به ارائه مقادیر متن ساده برای متغیرهای محیطی است که مقادیر مخفی در apphosting.yaml هستند.

به کاربران یا گروه ها اجازه دسترسی به اسرار را بدهید

اسرار ذخیره شده در apphosting.emulator.yaml با راه اندازی شبیه ساز خوانده می شوند. این بدان معنی است که تیم توسعه شما نیاز به دسترسی به راز دارد. می‌توانید از دستور apphosting:secrets:grantaccess برای اجازه دسترسی به یک راز به کاربر یا گروه از طریق ایمیل استفاده کنید.

firebase apphosting:secrets:grantaccess test-api-key --emails [email protected]

در صورت لزوم، استفاده از کلیدهای فقط آزمایشی در apphosting.emulator.yaml را در نظر بگیرید که به داده‌های تولید دسترسی ندارند، نمی‌توانند عوارض جانبی جهانی داشته باشند (ارسال ایمیل، شارژ کارت‌های اعتباری) و/یا سهمیه کمتری دارند. این کمک می کند تا اطمینان حاصل شود که کد بازبینی نشده پیامدهای کمتری در دنیای واقعی دارد.

استفاده از Google Groups را برای مدیریت دسترسی به اسرار به جای دادن دسترسی به تک تک کاربران در نظر بگیرید. این کار ورود اعضای جدید به تیم توسعه‌دهنده شما را ساده‌تر می‌کند، زیرا افزودن آنها به گروه به آنها امکان دسترسی به تمام اسرار مورد نیازشان را می‌دهد. ممکن است در حال حاضر یک گروه مناسب داشته باشید که در آن توسعه دهندگان با یکدیگر ارتباط برقرار می کنند. کنترل دسترسی توسط Google Groups همچنین کمک می کند تا اطمینان حاصل شود که توسعه دهندگانی که تیم شما را ترک می کنند، وقتی از گروه ایمیل حذف می شوند، دسترسی به تمام اسرار را از دست می دهند. اگر راز به داده‌های تولید یا عوارض جانبی در دنیای واقعی دسترسی دارد، باز هم ممکن است مناسب باشد که کلید خود را بچرخانید و با firebase apphosting:secrets:set مقدار جدیدی به آن بدهید.

شبیه ساز را اجرا کنید

firebase emulators:start

با این کار تمام شبیه سازهای تعریف شده در فایل firebase.json شما از جمله شبیه ساز App Hosting شروع می شود.