هدف‌های استقرار

هدف‌های استقرار شناسه‌های نام کوتاهی هستند (که خودتان تعریف می‌کنید) برای منابع Firebase در پروژه Firebase شما، مثل Hosting سایتی با دارایی‌های ایستای یکتا یا گروهی از Realtime Database نمونه که قوانین امنیتی یکسانی دارند.

هدف‌های استقرار زمانی مفید هستند که چندین سایت Hosting، چندین مخزن Cloud Storage، یا چندین نمونه Realtime Database داشته باشید. با هدف‌های استقرار، Firebase CLI می‌تواند تنظیمات را در منبع Firebase خاص یا گروهی از منابع در پروژه شما مستقر کند، ازجمله:

  • پیکربندی میزبانی برای هریک از سایت‌های Hosting شما
  • دارایی‌های ایستا از دایرکتوری پروژه شما برای هریک از Hosting سایت‌هایتان
  • قوانین امنیتی که توسط چندین نمونه Realtime Database یا چندین باکت Cloud Storage هم‌رسانی شده است

برای راه‌اندازی هدف استقرار:

  1. TARGET_NAME را روی منبع Firebase هدف‌یابی‌شده یا گروه منابع Firebase اعمال کنید.
  2. در فایل firebase.json، وقتی تنظیمات هر منبع یا گروه منابع را پیکربندی می‌کنید، به TARGET_NAME منسوب ارجاع دهید.

وقتی فرمان‌های CLI Firebase (مثل firebase deploy) را اجرا می‌کنید، Firebase CLI هر TARGET_NAME را با منابع Firebase مرتبط آن جفت می‌کند. سپس CLI تنظیمات هر منبع را به پروژه Firebase شما منتقل می‌کند.

راه‌اندازی هدف‌های استقرار برای منابع Firebase

بااستفاده از Firebase CLI، یک TARGET_NAME (شناسه نام کوتاه که خودتان تعریف می‌کنید) را به منبع Firebase یا گروهی از منابع Firebase اعمال کنید. ‫Firebase از اهداف استقرار برای موارد زیر پشتیبانی می‌کند:

تنظیمات هدف‌های استقرار در فایل .firebaserc در دایرکتوری پروژه شما ذخیره می‌شود، بنابراین فقط یک‌بار برای هر پروژه باید هدف‌های استقرار را تنظیم کنید.

راه‌اندازی هدف‌های استقرار برای Hosting

برای ایجاد هدف استقرار و اعمال TARGET_NAME در سایت Hosting، دستور CLI زیر را اجرا کنید:

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

که در آن پارامترها عبارت‌اند از:

  • TYPE — نوع منبع Firebase مربوطه

    • برای Firebase Hosting سایت، از hosting استفاده کنید.
  • TARGET_NAME — نامی منحصربه‌فرد برای سایت Hosting که در آن مستقر می‌شوید

  • ‫RESOURCE_IDENTIFIER — SITE_ID برای سایت Hosting همان‌طور که در پروژه Firebase شما فهرست شده است

برای مثال، اگر در پروژه Firebase خود دو سایت ایجاد کرده‌اید (myapp-blog و myapp-app)، می‌توانید با اجرای فرمان‌های زیر، TARGET_NAME منحصربه‌فردی (blog و app، به‌ترتیب) را برای هر سایت اعمال کنید:

firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app

راه‌اندازی هدف‌های استقرار برای Cloud Storage یا Realtime Database

برای ایجاد هدف استقرار و اعمال TARGET_NAME به مجموعه‌ای از Cloud Storage یا Realtime Database منبع، فرمان CLI زیر را اجرا کنید:

firebase target:apply TYPE TARGET_NAME RESOURCE-1_IDENTIFIER RESOURCE-2_IDENTIFIER ...

که در آن پارامترها عبارت‌اند از:

  • TYPE — نوع منبع Firebase مربوطه

    • برای Cloud Storage مخزن، از storage استفاده کنید.
    • برای Realtime Database نمونه، از database استفاده کنید.
  • TARGET_NAME — نامی منحصربه‌فرد برای منبع یا گروه منابعی که قوانین امنیتی را هم‌رسانی می‌کنند

  • RESOURCE_IDENTIFIER — شناسه‌های منابع همان‌طور که در پروژه Firebase شما فهرست شده است (مانند نام‌های مخزن ذخیره‌سازی یا شناسه‌های نمونه پایگاه داده) که همه قوانین امنیتی یکسانی دارند

برای مثال، می‌توانید TARGET_NAME main را به گروهی از سه دسته Cloud Storage منطقه‌ای (که همه قوانین امنیتی یکسانی دارند) با اجرای فرمان زیر اعمال کنید:

firebase target:apply storage main myproject.firebasestorage.app myproject-eu myproject-ja

توجه داشته باشید که myproject.firebasestorage.app شناسه باکت پیش‌فرض است، درحالی‌که myproject-eu و myproject-ja دو باکت اضافی هستند که در پروژه Firebase ایجاد شده‌اند.

فایل firebase.json را برای استفاده از هدف‌های استقرار پیکربندی کنید

پس‌از تنظیم کردن هدف‌های استقرار برای منابع Firebase، به هریک از TARGET_NAME اعمال‌شده در firebase.json فایل پیکربندی ارجاع دهید:

  1. برای هر منبع Firebase TYPE (hosting،‏ storage، یا database) مجموعه‌ای از اشیای پیکربندی ایجاد کنید.
  2. در آرایه‌ها، target را (بااستفاده از TARGET_NAME) مشخص کنید و تنظیماتتان را برای منبع Firebase یا گروه منابع مرتبط تعریف کنید.

با ادامه مثال‌های بالا، جایی که پروژه Firebase شما دو Hosting سایت و سه Cloud Storage مخزن دارد (که از قوانین امنیتی یکسانی استفاده می‌کنند)، فایل firebase.json شما به این شکل خواهد بود:

{
  "hosting": [ {
      "target": "blog",  // "blog" is the applied TARGET_NAME for the Hosting site "myapp-blog"
      "public": "blog/dist",  // contents of this folder are deployed to the site "myapp-blog"

      // ...
    },
    {
      "target": "app",  // "app" is the applied TARGET_NAME for the Hosting site "myapp-app"
      "public": "app/dist",  // contents of this folder are deployed to the site "myapp-app"

      // ...

      "rewrites": [...]  // You can define specific Hosting configurations for each site
    }
  ]
}

{
  "storage": [ {
      "target": "main",  // "main" is the applied TARGET_NAME for the group of Cloud Storage buckets
      "rules": "storage.main.rules"  // the file that contains the shared security rules
    }
  ]
}

اگر پیکربندی‌های متعددی برای منابعتان دارید، می‌توانید چندین هدف استقرار ایجاد کنید و هرکدام را در فایل firebase.json مشخص کنید. وقتی firebase deploy را اجرا می‌کنید، همه منابع مرتبط با هم مستقر خواهند شد.

مدیریت هدف‌های استقرار

تنظیمات هدف‌های استقرار در فایل .firebaserc در دایرکتوری پروژه شما ذخیره می‌شود. با اجرای هریک از فرمان‌های زیر از ریشه دایرکتوری پروژه، می‌توانید هدف‌های استقرار پروژه را مدیریت کنید.

فرمان شرح
firebase target فهرست هدف‌های استقرار برای دایرکتوری پروژه کنونی شما
firebase target:remove \
TYPE RESOURCE_IDENTIFIER
منبعی را از هدفی که به آن اختصاص داده شده است برمی‌دارد
firebase target:clear \
TYPE TARGET_NAME
همه منابع یا سایت Hosting را از هدف مشخص‌شده برمی‌دارد

فرمان‌های target:remove و target:clear به‌طور خودکار تنظیمات هدف استقرار را در فایل .firebaserc در دایرکتوری پروژه شما به‌روزرسانی می‌کنند.

پیش‌از پیاده‌سازی، به‌صورت محلی آزمایش کنید

هریک از فرمان‌های زیر را از ریشه فهرست راهنمای پروژه خود اجرا کنید.

فرمان شرح
firebase emulators:start همه منابع پیکربندی‌شده در دایرکتوری پروژه شما را شبیه‌سازی می‌کند
firebase emulators:start \
--only hosting:TARGET_NAME
فقط Hosting محتوا و پیکربندی Hosting سایت مشخص‌شده را شبیه‌سازی می‌کند
firebase emulators:start \
--only storage:TARGET_NAME
فقط فایل قوانین را برای Cloud Storage هدف مشخص‌شده شبیه‌سازی می‌کند
firebase emulators:start \
--only database:TARGET_NAME
فقط فایل قوانین را برای هدف Realtime Database مشخص‌شده شبیه‌سازی می‌کند

درباره پیکربندی و استفاده از Firebase Local Emulator Suite بیشتر بدانید.

استقرار منابع Firebase خاص

هریک از فرمان‌های زیر را از ریشه فهرست راهنمای پروژه خود اجرا کنید.

فرمان شرح
firebase deploy نسخهٔ پخش همه منابع قابل‌پیاده‌سازی را در دایرکتوری پروژه شما ایجاد می‌کند
firebase deploy \
--only hosting:TARGET_NAME
فقط Hosting محتوا و پیکربندی Hosting سایت مشخص‌شده را در کانال زنده سایت مستقر می‌کند
firebase hosting:channel:deploy CHANNEL_ID \
--only TARGET_NAME
فقط محتوا و پیکربندی Hosting سایت Hosting مشخص‌شده را در کانال پیش‌نمایش برای سایت مستقر می‌کند
firebase deploy \
--only storage:TARGET_NAME
فقط فایل قوانین را برای Cloud Storage هدف مشخص‌شده مستقر می‌کند
firebase deploy \
--only database:TARGET_NAME
فقط فایل قوانین را برای هدف Realtime Database مشخص‌شده مستقر می‌کند