در بیشتر مواقع، توصیه میکنیم از عرضههای خودکار یا عرضههای دستی از کنسول 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 باید یک مخزن 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 console در Cloud Storage -> Buckets -> Lifecycle -> Rules مدیریت کنید. به مدیریت چرخههای حیات شیء مراجعه کنید.
اجازههای استقرار بعدی (پساز مقداردهی اولیه مکان)
پساز اینکه باکت منبع و پیوندهای نقش برای مکان مقداردهی اولیه شد (یا با استقرار اولیه «خط فرمان» یا راهاندازی کنسول)، توسعهدهندگان عادی، ویرایشگران، یا 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 یا بالاتر استفاده کنید.
مراحل استقرار
-
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
این قالبها بهطور صریح در نوشتار شرح بارگذارنده فایل نمایش داده میشوند.
مراحل استقرار
گزینه الف: درطول آمادهسازی اولیه زیرینه
- انتخاب منبع: در دستیار ایجاد زیرینه، بارگذاری فایل فشرده را در مرحله «چگونه میخواهید برنامهتان را وارد کنید؟» انتخاب کنید.
- آمادهسازی انتقال: کلیک کردن روی «بعدی» باعث راهاندازی جریان آمادهسازی پسزمینهای میشود که بهترتیب Storage API را فعال میکند، از تنظیم نقشهای صحیح مطمئن میشود، و سطلی را درج یا بهروزرسانی میکند. واسط کاربر یک گردونه
بارگیری با پیامهای وضعیت پویا نمایش میدهد: «درحال فعال کردن API…» «درحال بررسی
اجازهها…» و «درحال آمادهسازی مخزن…».
- مدیریت خطا و نردههای محافظ: اگر هریک از مراحل آمادهسازی با خطا مواجه شود (مثلاً
«غیرمالک» بهدلیل کافی نبودن اجازههای IAM،
403 PERMISSION_DENIEDدریافت کند)، واسط کاربر هشدار ویژهای نمایش میدهد که به شما دستور میدهد با «مالک پروژه» تماس بگیرید. پیمایش گامبهگام کاملاً قفل میشود و دکمه «بعدی» و دکمه نهایی «تکمیل و استقرار» تا زمانی که مشکل برطرف نشود غیرفعال باقی میمانند.
- مدیریت خطا و نردههای محافظ: اگر هریک از مراحل آمادهسازی با خطا مواجه شود (مثلاً
«غیرمالک» بهدلیل کافی نبودن اجازههای IAM،
- بارگذاری فایلها: پساز تکمیل موفقیتآمیز آمادهسازی، فایل بایگانی خود را در عنصر بارگذار فایل انتخاب یا بکشید.
پیکربندی تنظیمات: دایرکتوری ریشه برنامه را مشخص کنید (بهطور پیشفرض روی
/تنظیم میشود).روی تکمیل و پیادهسازی کلیک کنید: دکمه مستقل «تکمیل» برای بارگذاریهای zip غیرفعال است زیرا بارگذاری بایگانی یک اقدام یکباره است و باید بلافاصله با پیادهسازی دنبال شود تا از عملکرد صحیح زیرینه اطمینان حاصل شود.
گزینه ب: ایجاد کردن عرضه دستی
- باز کردن کادر گفتگو: در داشبورد App Hosting، روی ایجاد عرضه کلیک کنید.
- انتخاب منبع: در گامبهگام چارگوش گفتگو، بارگذاری فایل فشرده را انتخاب کنید. اگر زیرینه اتصال 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 بازنشسته خواهد شد. برای ادامه انتشار بهروزرسانیها بدون تغییر نشانی وب، پروژهتان را انتقال دهید. با نحوه انتقال آشنا شوید.