در اکثر مواقع، توصیه میکنیم از عرضه خودکار یا عرضه با راهانداز دستی از کنسول 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 بازنشسته خواهد شد. برای ادامه انتشار بهروزرسانیها بدون تغییر نشانی وب، پروژهتان را انتقال دهید. با نحوه انتقال آشنا شوید.