راه های جایگزین برای استقرار در میزبانی برنامه

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

استقرار از منبع

استقرار از منبع به شما امکان می‌دهد کد منبع و پیکربندی برنامه خود را مستقیماً به App Hosting منتقل کنید، بدون اینکه نیاز به اتصال مداوم GitHub داشته باشید.

هنگام استقرار از منبع، App Hosting کد منبع شما را در یک مخزن Google Cloud Storage آپلود می‌کند، دستور ساخت چارچوب شما را در Cloud Build اجرا می‌کند و مصنوعات کامپایل شده را در Cloud Run و Cloud CDN مستقر می‌کند. همان فرآیند ساخت برای استقرارهای منبع محلی مانند استقرارهای GitHub استفاده می‌شود. اگر یک فایل .gitignore در پروژه شما وجود داشته باشد، فایل‌ها و پوشه‌های فهرست شده در داخل آن از استقرار شما مستثنی می‌شوند.

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

مجوزهای مورد نیاز IAM و تنظیمات زیرساخت

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

الزامات دقیق بستگی به این دارد که آیا برای اولین بار در یک مکان (منطقه) خاص مستقر می‌شوید یا خیر. برای اطلاعات بیشتر در مورد مجوزها، به نمای کلی Firebase IAM و مجوزهای خاص Firebase App Hosting مراجعه کنید.

مجوزهای لازم برای پذیرش اولیه (اولین استقرار در یک مکان)

وقتی برای اولین بار پیاده‌سازی منبع محلی در یک محل پروژه آغاز می‌شود، Hosting باید یک مخزن GCS برای ذخیره آرشیوهای شما فراهم کند و به نماینده سرویس Hosting دسترسی دسترسی به آنها را بدهد. از آنجا که اینها وظایف مدیریتی در سطح پروژه هستند، به مجوزهای مالک پروژه یا مدیر IAM نیاز دارند . کاربری با نقش ویرایشگر یا مشاهده‌گر پایه نمی‌تواند این تنظیمات اولیه را انجام دهد و مسدود خواهد شد.

مجوزهای راه‌اندازی پیش‌نیاز شامل موارد زیر است:

  • فعال کردن API ذخیره‌سازی : serviceusage.services.enable
  • ایجاد سطل منبع : storage.buckets.create و storage.buckets.list
  • Service Agent : resourcemanager.projects.setIamPolicy را طوری پیکربندی کنید که Hosting دسترسی خواندن ( roles/storage.objectViewer ) را بدهد تا بتواند کد آپلود شده را در طول ساخت‌ها دریافت کند.

برای استقرار اولیه، سطل GCS با چرخه عمر 30 روزه ایجاد می‌شود و پس از آن سطل حذف می‌شود. با این حال، می‌توانید این بازه زمانی را در کنسول Cloud در Cloud Storage -> Buckets -> Lifecycle -> Rules مدیریت کنید. به مدیریت چرخه‌های عمر شیء مراجعه کنید.

مجوزهای لازم برای استقرارهای بعدی (پس از مقداردهی اولیه مکان)

پس از اینکه مخزن منبع و پیوندهای نقش برای یک مکان (از طریق استقرار اولیه CLI یا تنظیم کنسول) مقداردهی اولیه شدند، توسعه‌دهندگان، ویرایشگران یا مدیران App Hosting می‌توانند به‌روزرسانی‌ها را مستقر کنند. مجوزهای مدیریتی در سطح پروژه برای استقرارهای معمول لازم نیست.

مجوزهای استقرار فعال شامل موارد زیر است:

  • سطل را تأیید کنید : storage.buckets.list
  • آرشیو منبع را آپلود کنید : storage.objects.create
  • فعال‌سازی ساخت و راه‌اندازی : مجوزهای Hosting استاندارد ( apphosting.builds.create و apphosting.rollouts.create )

استقرار از منبع با Firebase CLI

Firebase CLI نسخه ۱۴.۴.۰ و بالاتر به شما امکان می‌دهد کد منبع و پیکربندی‌های برنامه خود را مستقیماً از دستگاه محلی خود به Firebase منتقل کنید. این قابلیت در صورتی که از قبل سایر پیاده‌سازی‌های Firebase (مانند قوانین یا توابع امنیتی) را مدیریت می‌کنید و می‌خواهید برنامه وب و سرویس‌های backend خود را با یک دستور CLI واحد پیاده‌سازی کنید، مفید است.

پیش‌نیازها

  • پروژه‌های شما باید طبق طرح بلیز (Blaze) باشند.
  • شما باید از firebase-tools نسخه ۱۴.۴.۰ یا بالاتر استفاده کنید.

مراحل استقرار

  1. firebase init apphosting در دایرکتوری پروژه محلی خود اجرا کنید.
  2. وقتی از شما خواسته شد، گزینه «استفاده از یک پروژه موجود» را انتخاب کنید و پروژه فایربیس هدف خود را انتخاب کنید.
  3. یک backend جدید یا موجود را برای استقرار انتخاب کنید؛ این مرحله استقرارهای Hosting را برای دایرکتوری محلی شما تنظیم می‌کند و از شما جزئیات پیکربندی را درخواست می‌کند:
    • شناسه‌ی بک‌اندی که قرار است در آن مستقر شود
    • منطقه‌ای که قرار است در آن مستقر شوید، در صورت ایجاد یک backend جدید
    • مسیر دایرکتوری ریشه کد برنامه شما
    • زمان اجرای Node.js مورد نظر شما. انتخاب یک زمان اجرای نسخه‌بندی شده، به‌روزرسانی‌های خودکار تصویر پایه (ABIU) را فعال می‌کند تا به‌طور خودکار وصله‌های امنیتی را در محیط زیربنایی شما اعمال کند.
  4. 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 (آپلود فایل زیپ)

کنسول Firebase یک رابط گرافیکی برای استقرار برنامه‌ها با آپلود مستقیم یک آرشیو منبع فشرده ارائه می‌دهد. این به عنوان جایگزینی برای جریان اتصال GitHub عمل می‌کند، برای مواردی که ترجیح می‌دهید از GitHub استفاده نکنید یا تنظیمات CI/CD متفاوتی را ترجیح می‌دهید.

آپلودهای آرشیو می‌توانند در طول ایجاد اولیه بک‌اند یا هنگام ایجاد یک انتشار دستی روی بک‌اند موجود، از جمله بک‌اندهایی که در ابتدا با استفاده از Firebase CLI مستقر شده‌اند، انجام شوند.

فرمت‌های پشتیبانی‌شده

آپلودکننده کنسول به طور پیش‌فرض دو فرمت آرشیو فشرده را اعتبارسنجی و می‌پذیرد:

  • .zip
  • .tgz

این فرمت‌ها به صراحت در متن توضیحات آپلودکننده فایل نمایش داده می‌شوند.

مراحل استقرار

گزینه الف: در طول دوره اولیه آشنایی با بک‌اند
  1. انتخاب منبع : در ویزارد ایجاد بک‌اند، در مرحله «چگونه می‌خواهید برنامه خود را وارد کنید؟» گزینه «بارگذاری فایل فشرده » را انتخاب کنید.
  2. آماده‌سازی اولیه : کلیک روی «بعدی» جریان آماده‌سازی پس‌زمینه را آغاز می‌کند که به ترتیب API ذخیره‌سازی را فعال می‌کند، از تنظیم نقش‌های صحیح اطمینان حاصل می‌کند و سطل را بالا می‌آورد. رابط کاربری یک چرخنده بارگذاری با پیام‌های وضعیت پویا نمایش می‌دهد: «در حال فعال‌سازی API...»، «در حال بررسی مجوزها...» و «در حال آماده‌سازی سطل...» .
    • مدیریت خطا و گاردریل‌ها : اگر هر یک از مراحل آماده‌سازی با شکست مواجه شود (مانند دریافت خطای 403 PERMISSION_DENIED توسط فردی که مالک پروژه نیست به دلیل مجوزهای ناکافی IAM)، رابط کاربری یک هشدار اختصاصی نمایش می‌دهد که به شما دستور می‌دهد با مالک پروژه تماس بگیرید. پیمایش مرحله‌ای کاملاً قفل شده است و دکمه "بعدی" و دکمه نهایی "پایان و استقرار" تا زمان حل مشکل غیرفعال می‌مانند.
  3. آپلود فایل‌ها : پس از اتمام موفقیت‌آمیز آماده‌سازی، فایل آرشیو خود را انتخاب یا به داخل کامپوننت آپلودکننده فایل بکشید.
  4. پیکربندی تنظیمات : دایرکتوری ریشه برنامه خود را مشخص کنید (پیش‌فرض روی / ).

  5. روی Finish and Deploy کلیک کنید: دکمه‌ی مستقل "Finish" برای آپلود فایل‌های زیپ غیرفعال است، زیرا آپلود یک آرشیو یک اقدام یک‌باره است و باید بلافاصله پس از آن، عملیات Deploy انجام شود تا از عملکرد صحیح backend اطمینان حاصل شود.

گزینه ب: ایجاد یک فهرست دستی
  1. پنجره گفتگو را باز کنید : در داشبورد Hosting ، روی ایجاد فهرست کلیک کنید.
  2. انتخاب منبع : در مرحله‌ی دیالوگ، گزینه‌ی «بارگذاری فایل زیپ » را انتخاب کنید. اگر بک‌اند اتصال GitHub ندارد، گزینه‌ی «GitHub» غیرفعال است.
  3. آماده‌سازی و آپلود : این انتخاب، همان جریان آماده‌سازی پس‌زمینه ( "فعال‌سازی API..." ، "بررسی مجوزها..." و "آماده‌سازی سطل..." ) را آغاز می‌کند. پس از موفقیت، فایل بایگانی خود را با استفاده از آپلودکننده بکشید یا انتخاب کنید، دایرکتوری ریشه برنامه را مشخص کنید و روی Deploy کلیک کنید تا ساخت و راه‌اندازی آغاز شود.

استقرار با استفاده از Terraform

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

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

ایجاد اتصال GitHub برای CI/CD

شما می‌توانید در هر زمانی در تب Deployment از تنظیمات backend در کنسول Firebase ، به یک مخزن GitHub متصل شوید. این به شما امکان می‌دهد یک نمونه اولیه برنامه را از یک محیط محلی مستقر کنید و سپس وقتی آماده بودید، به یک خط لوله CI/CD خودکار منتقل شوید.

با استفاده از ابزارهای هوش مصنوعی مستقر شوید

ما در ۲۲ مارس ۲۰۲۷ Firebase Studio خداحافظی خواهیم کرد . در حالی که بک‌اندهای App Hosting شما تحت تأثیر قرار نمی‌گیرند، دکمه Publish در Firebase Studio غیرفعال خواهد شد. برای ادامه انتشار به‌روزرسانی‌ها بدون تغییر URL، پروژه خود را منتقل کنید. نحوه مهاجرت را بیاموزید .