نشر الأهداف

نشر الأهداف هي معرّفات قصيرة (تحدّدها بنفسك) لموارد Firebase في مشروع Firebase، مثل موقع إلكتروني مستضاف بمواد عرض ثابتة فريدة أو مجموعة من مثيلات "قاعدة بيانات الوقت الفعلي" التي تتشارك قواعد الأمان نفسها.

يمكنك الاستفادة من نشر الأهداف عندما يكون لديك مواقع استضافة متعددة أو عدة مجموعات بيانات في Cloud Storage أو عدّة مثيلات من "قاعدة بيانات الوقت الفعلي". باستخدام أهداف النشر، يمكن لواجهة سطر الأوامر في Firebase نشر الإعدادات إلى مورد محدّد من Firebase أو مجموعة من الموارد في مشروعك، مثل:

  • إعدادات الاستضافة لكل موقع من "مواقع الاستضافة"
  • وهي أصول ثابتة من دليل المشروع لكل موقع من مواقع الاستضافة
  • يشير هذا المصطلح إلى قواعد الأمان التي تتم مشاركتها من خلال عدة مثيلات من "قاعدة بيانات الوقت الفعلي" أو عدة مجموعات بيانات في Cloud Storage.

لإعداد هدف نشر:

  1. يمكنك تطبيق TARGET_NAME على مورد Firebase المستهدف أو مجموعة موارد Firebase.
  2. في ملف firebase.json، راجع TARGET_NAME المرتبط عند ضبط إعدادات كل مورد أو مجموعة من الموارد.

عند تنفيذ أوامر واجهة سطر الأوامر في Firebase (مثل firebase deploy)، تعمل واجهة سطر الأوامر في Firebase على إقران كل TARGET_NAME بموارد Firebase المرتبطة به. بعد ذلك، تُعلم واجهة سطر الأوامر بإعدادات كل مورد في مشروع Firebase.

إعداد أهداف النشر لموارد Firebase

باستخدام واجهة سطر الأوامر في Firebase، طبِّق TARGET_NAME (معرّفًا مختصرًا تعرِّفه بنفسك) على مورد في Firebase أو مجموعة من موارد Firebase. تتيح منصة Firebase نشر الأهداف لكلّ من:

يتم تخزين إعدادات أهداف النشر في ملف .firebaserc في دليل المشروع، لذلك عليك فقط إعداد أهداف النشر مرة واحدة لكل مشروع.

إعداد أهداف النشر للاستضافة

لإنشاء هدف نشر وتطبيق TARGET_NAME على موقع إلكتروني للاستضافة، شغِّل أمر CLI التالي:

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

أماكن المَعلمات:

  • TYPE - نوع مورد Firebase ذي الصلة

    • بالنسبة إلى مواقع استضافة Firebase، استخدِم hosting.
  • TARGET_NAME: اسم فريد للموقع الإلكتروني للاستضافة الذي تنشره فيه

  • RESOURCE_IDENTIFIERSITE_ID للموقع الإلكتروني للاستضافة كما هو مُدرَج في مشروع Firebase

على سبيل المثال، إذا أنشأت موقعين إلكترونيين (myapp-blog وmyapp-app) في مشروع Firebase، يمكنك تطبيق TARGET_NAME (blog وapp على التوالي) على كل موقع إلكتروني عن طريق تشغيل الأوامر التالية:

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

إعداد أهداف النشر في Cloud Storage أو "قاعدة البيانات في الوقت الفعلي"

لإنشاء هدف نشر وتطبيق TARGET_NAME على مجموعة من موارد Cloud Storage أو قاعدة البيانات في الوقت الفعلي، شغِّل أمر CLI التالي:

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

أماكن المَعلمات:

  • TYPE - نوع مورد Firebase ذي الصلة

    • بالنسبة إلى حِزم Cloud Storage، استخدِم storage.
    • بالنسبة إلى مثيلات قاعدة بيانات الوقت الفعلي، استخدِم database.
  • TARGET_NAME: اسم فريد للمورد أو مجموعة من الموارد التي تتشارك قواعد الأمان

  • RESOURCE_IDENTIFIER: معرّفات الموارد كما هي مدرجة في مشروع Firebase (مثل أسماء حزم التخزين أو أرقام تعريف المثيلات لقاعدة البيانات) التي تشترك جميعها في قواعد الأمان نفسها

على سبيل المثال، يمكنك تطبيق TARGET_NAME من main على مجموعة مكونة من ثلاث حزم إقليمية على Cloud Storage (تتشارك جميعها قواعد الأمان نفسها) من خلال تنفيذ الأمر التالي:

firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja

يُرجى العلم بأنّ myproject.appspot.com هو معرّف الحزمة التلقائية، في حين أنّ myproject-eu وmyproject-ja هما حزمتان إضافيتان تم إنشاؤهما في مشروع Firebase.

ضبط ملف firebase.json لاستخدام تفعيل الأهداف

بعد إعداد أهداف النشر لموارد Firebase، أشِر إلى كل TARGET_NAME مطبَّق في ملف إعداد firebase.json:

  1. إنشاء مصفوفة من عناصر الإعداد لكل مورد في Firebase TYPE (hosting أو storage أو database).
  2. في الصفائف، حدِّد target (باستخدام TARGET_NAME) وحدِّد إعداداتك لمورد أو مجموعة موارد Firebase المرتبطة.

متابعة للأمثلة المذكورة أعلاه، حيث يحتوي مشروع Firebase على موقعين للاستضافة وثلاث حزم بيانات 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 في دليل المشروع. يمكنك إدارة أهداف النشر لمشروعك عن طريق تشغيل أي من الأوامر التالية من جذر دليل مشروعك.

Command الوصف
firebase target يسرد أهداف النشر لدليل مشروعك الحالي
firebase target:remove \
TYPE RESOURCE_IDENTIFIER
إزالة مورد من الهدف الذي تم تخصيصه له
firebase target:clear \
TYPE TARGET_NAME
يؤدي هذا الخيار إلى إزالة جميع الموارد أو موقع الاستضافة الإلكتروني من الهدف المحدَّد.

يعمل الأمران target:remove وtarget:clear تلقائيًا على تعديل إعدادات النشر المستهدف في ملف .firebaserc ضمن دليل المشروع.

الاختبار على الجهاز قبل النشر

نفِّذ أيًّا من الأوامر التالية من جذر دليل مشروعك.

Command الوصف
firebase emulators:start يحاكي جميع الموارد التي تم ضبطها في دليل المشروع.
firebase emulators:start \
--only hosting:TARGET_NAME
لمحاكاة محتوى "الاستضافة" فقط وإعداد موقع الاستضافة المحدّد
firebase emulators:start \
--only storage:TARGET_NAME
يحاكي ملف القواعد فقط لهدف Cloud Storage المحدَّد.
firebase emulators:start \
--only database:TARGET_NAME
يحاكي ملف القواعد فقط لهدف قاعدة بيانات الوقت الفعلي المحدد

اطّلِع على مزيد من المعلومات عن ضبط حزمة المحاكي المحلي من Firebase واستخدامها.

نشر موارد Firebase محددة

نفِّذ أيًّا من الأوامر التالية من جذر دليل مشروعك.

Command الوصف
firebase deploy تنشئ إصدارًا لجميع الموارد القابلة للنشر في دليل مشروعك.
firebase deploy \
--only hosting:TARGET_NAME
تفعيل محتوى "الاستضافة" وإعداد موقع الاستضافة المحدّد فقط على القناة المباشرة للموقع الإلكتروني
firebase hosting:channel:deploy CHANNEL_ID \
--only TARGET_NAME
يؤدي هذا الإعداد إلى نشر محتوى "الاستضافة" وإعداد موقع الاستضافة المحدَّد فقط في قناة معاينة للموقع الإلكتروني.
firebase deploy \
--only storage:TARGET_NAME
نشر ملف القواعد فقط لهدف Cloud Storage المحدَّد
firebase deploy \
--only database:TARGET_NAME
تؤدي هذه السياسة إلى نشر ملف القواعد فقط لهدف قاعدة بيانات الوقت الفعلي المحدّد.