شما میتوانید قبل از استقرار App Hosting ، با استفاده از شبیهساز App Hosting که بخشی از مجموعه شبیهسازهای محلی Firebase است، تستهای محلی برنامه خود را انجام دهید.
قبل از استفاده از شبیهساز 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 :
- به شما امکان میدهد برنامه وب خود را به صورت محلی اجرا کنید، با متغیرهای محیطی و رمزهای تعریف شده در فایلهای پیکربندی
apphosting.yaml. - میتواند متغیرهای محیطی و رمزها را برای استفاده در شبیهساز با فایل
apphosting.emulator.yamlلغو کند. - میتواند در کنار سایر شبیهسازهای Firebase مورد استفاده قرار گیرد. اگر از Firestore، Auth یا هر شبیهساز دیگری استفاده میکنید، Local Emulator Suite تضمین میکند که این شبیهسازها قبل از شبیهساز App Hosting اجرا شوند.
شبیهساز را پیکربندی کنید
برای شروع، Local Emulator Suite همانطور که در بخش نصب، پیکربندی و ادغام مجموعه شبیهساز محلی (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 استفاده میشود. همچنین میتوانید شبیهساز App Hosting را با بهروزرسانی مستقیم firebase.json پیکربندی کنید. طرحواره (schema) شبیهساز App Hosting به صورت زیر است:
{
...
"emulators": {
"apphosting": {
"startCommand": <command> [optional]
"rootDirectory": <path> [optional]
}
}
}
-
startCommandبه طور خودکار هنگام راهاندازی اولیه شبیهساز تولید و تنظیم میشود. اگر ارائه نشود، شبیهساز دستور dev مدیر بسته شما را شناسایی و اجرا خواهد کرد. -
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 my-team@my-company.com
در صورت لزوم، استفاده از کلیدهای فقط آزمایشی در apphosting.emulator.yaml را در نظر بگیرید که به دادههای عملیاتی دسترسی ندارند، نمیتوانند عوارض جانبی سراسری (ارسال ایمیل، شارژ کارتهای اعتباری) داشته باشند و/یا سهمیه کمتری داشته باشند. این امر به اطمینان از این کمک میکند که کد بررسی نشده عواقب کمتری در دنیای واقعی داشته باشد.
به جای اعطای دسترسی به کاربران خاص، استفاده از گروههای گوگل را برای مدیریت دسترسی به اسرار در نظر بگیرید. این کار، ورود اعضای جدید به تیم توسعهدهندگان شما را سادهتر میکند، زیرا اضافه کردن آنها به گروه، به آنها امکان دسترسی به تمام اسرار مورد نیازشان را میدهد. ممکن است از قبل یک گروه مناسب داشته باشید که در آن توسعهدهندگان با یکدیگر ارتباط برقرار میکنند. کنترل دسترسی توسط گروههای گوگل همچنین به شما اطمینان میدهد که توسعهدهندگانی که تیم شما را ترک میکنند، هنگام حذف از گروه ایمیل، دسترسی به تمام اسرار را از دست میدهند. اگر این اسرار به دادههای عملیاتی یا عوارض جانبی دنیای واقعی دسترسی داشته باشند، باز هم ممکن است مناسب باشد که کلید خود را بچرخانید و با استفاده از firebase apphosting:secrets:set مقدار جدیدی به آن بدهید.
شبیهساز را اجرا کنید
firebase emulators:start
این کار تمام شبیهسازهای تعریفشده در فایل firebase.json شما، از جمله شبیهساز App Hosting ، را اجرا میکند.