در اکثر مواقع، توصیه میکنیم از عرضه خودکار یا عرضه با راهانداز دستی از کنسول Firebase استفاده کنید. بااینحال، ممکن است برای جریان استقرار سفارشیتر استفادهای داشته باشید. App Hosting گزینههای متعددی برای استقرار سفارشی دارد.
استقرار از منبع
استقرار از منبع به شما امکان میدهد کد منبع و پیکربندی برنامهتان را مستقیماً به App Hosting ارسال کنید، بدون اینکه به اتصال دائمی GitHub نیاز داشته باشید.
هنگام استقرار از منبع، App Hosting کد منبع شما را در یک
سبد Google Cloud Storage بارگذاری میکند، فرمان ساخت چارچوب شما را در
Cloud Build اجرا میکند، و مصنوعات کامپایلشده را در Cloud Run و
Cloud CDN مستقر میکند. همان فرایند ساخت برای استقرار منبع محلی
بهعنوان استقرار GitHub استفاده میشود. اگر فایل .gitignore در پروژهتان وجود داشته باشد، فایلها و پوشههای فهرستشده در آن از استقرارتان مستثنی میشوند.
میتوانید از منبع محلی بااستفاده از Firebase CLI یا Firebase کنسول مستقر کنید.
مجوزهای IAM و راهاندازی زیرساخت موردنیاز
چون هم Firebase CLI و هم کنسول Firebase از زیرساخت پسبک یکسانی برای ذخیره و ساختن بایگانیهای منبع شما استفاده میکنند، الزامات اجازه IAM یکسانی برای هر دو روش استقرار اعمال میشود.
الزامات دقیق به این بستگی دارد که آیا برای اولینبار در مکان (منطقه) خاصی استقرار میکنید یا نه. برای اطلاعات بیشتر درباره اجازهها، نمای کلی Firebase IAM و اجازههای Firebase App Hosting خاص را ببینید.
اجازههای مربوط به آمادهسازی اولیه (اولین استقرار در یک مکان)
وقتی استقرار منبع محلی برای اولینبار در مکان پروژه آغاز میشود، App Hosting باید یک سطل GCS برای ذخیره کردن بایگانیهای شما فراهم کند و به «نماینده سرویس» App Hosting اجازه دسترسی به آنها را بدهد. چون اینها تکالیف اداری در سطح پروژه هستند، به اجازههای «مالک پروژه» یا «سرپرست IAM» نیاز دارند. کاربری که نقش «ویرایشگر» یا «بیننده» پایه دارد نمیتواند این راهاندازی اولیه را انجام دهد و مسدود خواهد شد.
اجازههای راهاندازی پیشنیاز عبارتاند از:
- فعال کردن Storage API:
serviceusage.services.enable - ایجاد کردن دسته منبع:
storage.buckets.createوstorage.buckets.list - پیکربندی نماینده سرویس:
resourcemanager.projects.setIamPolicyبرای اعطای App Hosting دسترسی خواندن (roles/storage.objectViewer) تا بتواند کد بارگذاریشده را درطول ساخت واکشی کند.
برای استقرار اولیه، سطل GCS با چرخه حیات ۳۰ روزه ایجاد میشود و پساز آن سطل حذف میشود. بااینحال، میتوانید این بازه زمانی را در کنسول Cloud در Cloud Storage -> Buckets -> Lifecycle -> Rules مدیریت کنید. به مدیریت چرخههای حیات شیء مراجعه کنید.
اجازههای استقرارهای بعدی (پساز مقداردهی اولیه مکان)
پساز اینکه دسته منبع و اتصالهای نقش برای مکانی مقداردهی اولیه شد (ازطریق استقرار CLI اولیه یا راهاندازی کنسول)، توسعهدهندگان، ویرایشگران، یا سرپرستانApp Hosting عادی میتوانند بهروزرسانیها را مستقر کنند. برای استقرارهای روتین، به اجازههای سرپرستی در سطح پروژه نیازی نیست.
اجازههای استقرار فعال شامل موارد زیر است:
- تأیید کردن دسته:
storage.buckets.list - بارگذاری بایگانی منبع:
storage.objects.create - راهاندازی ساخت و عرضه: اجازههای استاندارد App Hosting (
apphosting.builds.createوapphosting.rollouts.create)
مستقر کردن از منبع با Firebase CLI
Firebase CLI نسخه ۱۴.۴.۰ و بالاتر به شما امکان میدهد کد منبع و پیکربندیهای برنامهتان را مستقیماً از دستگاه محلیتان به Firebase ارسال کنید. اگر درحالحاضر سایر استقرارهای Firebase (مانند قوانین یا توابع امنیتی) را مدیریت میکنید و میخواهید برنامه وب و سرویسهای پسین خود را با یک فرمان CLI واحد مستقر کنید، این روش مناسب است.
پیشنیازها
- پروژههایتان باید در طرح Blaze باشد.
- باید از firebase-tools نسخه ۱۴.۴.۰ یا بالاتر استفاده کنید.
مراحل پیادهسازی
firebase init apphostingرا در دایرکتوری پروژه محلیتان اجرا کنید.- وقتی از شما خواسته شد، استفاده از پروژه موجود را انتخاب کنید و پروژه Firebase هدف را انتخاب کنید.
- یک پسای جدید یا موجود را برای استقرار انتخاب کنید؛ این مرحله استقرارهای App Hosting را برای دایرکتوری محلی شما راهاندازی میکند و جزئیات پیکربندی را از شما درخواست میکند:
- شناسه باطن برای استقرار در آن
- منطقهای که درصورت ایجاد پسای جدید، در آن مستقر میشود
- مسیر دایرکتوری ریشه کد برنامه شما
- زمان اجرای Node.js ترجیحی شما. انتخاب زمان اجرای نسخهدار، بهروزرسانیهای خودکار تصویر پایه (ABIU) را فعال میکند تا وصلههای امنیتی بهطور خودکار در محیط زیربنایی شما اعمال شود.
- App Hosting اولویتهای استقرار شما را در
firebase.jsonذخیره میکند، و اگر فایل ازقبل وجود نداشته باشد، آن را در پروژه محلی شما ایجاد میکند. پساز تکمیل موفقیتآمیز مقداردهی اولیه،firebase deployرا برای استقرار کد منبع خود اجرا کنید.
نمونه firebase.json
{
"apphosting": [
{
"backendId": "my-backend",
// rootDir specifies the directory containing the app to deploy, but the entire
// parent directory of firebase.json will be zipped and uploaded to ensure that
// dependencies outside of the app directory will be available at build time.
"rootDir": "./my-app",
"ignore": [
"node_modules",
".git",
"firebase-debug.log",
"firebase-debug.*.log",
"functions"
]
}
]
}
استقرار با «کنسول Firebase» (بارگذاری فایل Zip)
Firebaseکنسول یک میانای گرافیکی برای استقرار برنامهها با بارگذاری مستقیم بایگانی منبع فشرده ارائه میدهد. این روش بهعنوان جایگزینی برای جریان اتصال GitHub عمل میکند، برای مواردی که ترجیح میدهید از GitHub استفاده نکنید یا راهاندازی CI/CD دیگری را ترجیح میدهید.
بارگذاریهای بایگانی را میتوان درطول ایجاد اولیه باطن یا هنگام ایجاد عرضه دستی در باطن موجود انجام داد، ازجمله باطنهایی که در ابتدا بااستفاده از Firebase CLI مستقر شدهاند.
قالبهای پشتیبانیشده
بارگذارنده کنسول بهطور بومی دو قالب بایگانی فشرده را اعتبارسنجی و قبول میکند:
.zip.tgz
این قالبها بهطور صریح در نوشتار شرح بارگذارنده فایل نمایش داده میشوند.
مراحل پیادهسازی
گزینه الف: درطول آمادهسازی اولیه باطن
- انتخاب منبع: در جادوی ایجاد باطن، بارگذاری فایل zip را در مرحله «چگونه میخواهید برنامهتان را وارد کنید؟» انتخاب کنید.
- آمادهسازی برای آمادهسازی: کلیک کردن روی «بعدی» جریان آمادهسازی پسزمینه را راهاندازی میکند، که بهطور متوالی Storage API را فعال میکند، اطمینان حاصل میکند که نقشهای صحیح راهاندازی شدهاند، و سطل را بهروزرسانی میکند. رابط کاربری یک نشانگر بارگیری
با پیامهای وضعیت پویا نمایش میدهد: «درحال فعال کردن API...»، «درحال بررسی
اجازهها…» و «درحال آمادهسازی دسته…».
- رسیدگی به خطا و حفاظها: اگر هریک از مراحل آمادهسازی ناموفق باشد (مثلاً
یک غیرمالک بهدلیل ناکافی بودن اجازههای IAM،
403 PERMISSION_DENIEDدریافت کند)، واسط کاربر هشدار اختصاصیای نمایش میدهد که به شما دستور میدهد با «مالک پروژه» تماس بگیرید. پیمایش گامبهگام کاملاً قفل شده است و دکمه «بعدی» و دکمه نهایی «پایان و استقرار» تا زمانی که مشکل حل نشود غیرفعال میمانند.
- رسیدگی به خطا و حفاظها: اگر هریک از مراحل آمادهسازی ناموفق باشد (مثلاً
یک غیرمالک بهدلیل ناکافی بودن اجازههای IAM،
- بارگذاری فایلها: پساز تکمیل موفقیتآمیز آمادهسازی، فایل بایگانیتان را انتخاب کنید یا آن را به مؤلفه بارگذارنده فایل بکشید.
پیکربندی تنظیمات: دایرکتوری ریشه برنامه را مشخص کنید (بهطور پیشفرض
/).روی پایان و استقرار کلیک کنید: دکمه مستقل «پایان» برای بارگذاریهای zip غیرفعال است زیرا بارگذاری بایگانی اقدامی یکباره است و باید بلافاصله پساز آن استقرار انجام شود تا از عملکرد صحیح پسبست اطمینان حاصل شود.
گزینه ب: ایجاد عرضه «دستی»
- کادر گفتگوی باز: در داشبورد App Hosting، روی ایجاد عرضه کلیک کنید.
- انتخاب منبع: بارگذاری فایل zip را در گامشمار کادر گفتگو انتخاب کنید. اگر بخش پشتی اتصال GitHub موجودی نداشته باشد، گزینه «GitHub» غیرفعال است.
- آمادهسازی و بارگذاری: انتخاب کردن باعث راهاندازی همان جریان آمادهسازی پسزمینه میشود («درحال فعال کردن API...»، «درحال بررسی اجازهها...»، و «درحال آمادهسازی سطل...»). پساز موفقیت، فایل بایگانیتان را بااستفاده از بارگذارنده بکشید یا انتخاب کنید، دایرکتوری ریشه برنامه را مشخص کنید، و برای راهاندازی ساخت و عرضه، روی استقرار کلیک کنید.
پیادهسازی کردن بااستفاده از Terraform
اگر به کنترل بیشتری بر فرایند ساخت و محیط مستقرشده نیاز دارید، میتوانید بااستفاده از Terraform مستقر کنید. Terraform به شما امکان میدهد منابع App Hosting خود را بااستفاده از فایلهای پیکربندی اعلانی تعریف و مدیریت کنید و این امکان را فراهم میکند که تصویر محفظه ازپیشساختهشده خود را مستقیماً در App Hosting مستقر کنید، بهجای اینکه برای ساختن از کد منبع خود به App Hosting متکی باشید.
اگر Terraform برایتان جدید است، شروع به کار با Terraform و Firebase را ببینید. اگر ازقبل با Terraform آشنایی دارید، میتوانید با فایلهای پیکربندی نمونه و دیگر App Hosting منابع شروع کنید.
راهاندازی اتصال GitHub برای CI/CD
هرزمان بخواهید میتوانید مخزن GitHub را در برگه استقرار تنظیمات پسبک در کنسول Firebase متصل کنید. این به شما امکان میدهد نمونه اولیه برنامه را از محیط محلی مستقر کنید و سپس وقتی آماده بودید به خط لوله CI/CD خودکار انتقال دهید.
پیادهسازی بااستفاده از ابزارهای هوش مصنوعی
در ۲۲ مارس ۲۰۲۷، Firebase Studio را متوقف میکنیم. درحالیکه App Hosting باطنهای شما تحت تأثیر قرار نمیگیرند، دکمه انتشار در Firebase Studio بازنشسته خواهد شد. برای ادامه انتشار بهروزرسانیها بدون تغییر نشانی وب، پروژهتان را انتقال دهید. با نحوه انتقال آشنا شوید.