في معظم الأحيان، ننصحك باستخدام عمليات الطرح التلقائية أو عمليات الطرح التي يتم تشغيلها يدويًا من وحدة تحكّم Firebase. ومع ذلك، قد تحتاج إلى سير عمل نشر أكثر تخصيصًا. يتضمّن App Hosting خيارات متعدّدة للنشر المخصّص.
النشر من المصدر
يتيح لك النشر من المصدر إرسال رمز المصدر وإعدادات تطبيقك مباشرةً إلى App Hosting بدون الحاجة إلى ربط دائم بحساب GitHub.
عند النشر من المصدر، تحمّل App Hosting رمز المصدر إلى حزمة Google Cloud Storage، وتنفّذ أمر الإنشاء الخاص بإطار العمل في Cloud Build، وتنشر العناصر المجمّعة إلى Cloud Run وCloud CDN. يتم استخدام عملية التصميم نفسها لعمليات نشر المصدر المحلي كما هو الحال مع عمليات النشر من GitHub. في حال توفّر ملف .gitignore في مشروعك، يتم استبعاد الملفات والمجلدات المدرَجة بداخله من عملية النشر.
يمكنك تفعيل من مصدر محلي باستخدام واجهة سطر الأوامر Firebase أو وحدة تحكّم Firebase.
أذونات إدارة الهوية وإمكانية الوصول المطلوبة وإعداد البنية الأساسية
بما أنّ كلّاً من واجهة سطر الأوامر (CLI) Firebase ووحدة التحكّم Firebase تستخدمان البنية الأساسية نفسها في الخلفية لتخزين وإنشاء أرشيفات المصدر، تنطبق متطلبات أذونات إدارة الهوية وإمكانية الوصول (IAM) نفسها على كلتا طريقتَي النشر.
تعتمد المتطلبات الدقيقة على ما إذا كنت ستنفّذ عملية النشر في موقع جغرافي (منطقة) محدّد للمرة الأولى أم لا. لمزيد من المعلومات عن الأذونات، يُرجى الاطّلاع على نظرة عامة على إدارة الهوية وإمكانية الوصول (IAM) في Firebase وأذونات استضافة التطبيقات من Firebase المحدّدة.
الأذونات المطلوبة لإعداد الجهاز لأول مرة (عملية النشر الأولى في موقع جغرافي)
عند بدء عملية نشر مصدر محلي في موقع مشروع للمرة الأولى، يجب أن توفّر Hosting حزمة GCS لتخزين الأرشيفات ومنح إذن وصول إلى "وكيل خدمة Hosting" للوصول إليها. بما أنّ هذه المهام إدارية على مستوى المشروع، فهي تتطلّب أذونات "مالك المشروع" أو "مشرف إدارة الهوية وإمكانية الوصول". لا يمكن للمستخدم الذي لديه دور "محرّر" أو "مشاهد" أساسي إجراء عملية الإعداد الأوّلي هذه وسيتم حظره.
تشمل أذونات الإعداد المسبق ما يلي:
- تفعيل Storage API:
serviceusage.services.enable - إنشاء حزمة المصدر:
storage.buckets.createوstorage.buckets.list - ضبط وكيل الخدمة:
resourcemanager.projects.setIamPolicyلمنح Hosting إذن الوصول للقراءة (roles/storage.objectViewer) كي يتمكّن من جلب الرمز البرمجي الذي تم تحميله أثناء عمليات الإنشاء.
عند النشر الأوّلي، يتم إنشاء حزمة GCS بدورة حياة مدتها 30 يومًا، وبعدها يتم حذف الحزمة. ومع ذلك، يمكنك إدارة هذا الإطار الزمني في Cloud Console ضمن Cloud Storage -> الحِزم -> دورة الحياة -> القواعد. راجِع إدارة دورات حياة العناصر.
الأذونات اللازمة لعمليات النشر اللاحقة (بعد تهيئة الموقع الجغرافي)
بعد إعداد حزمة المصدر وعمليات ربط الأدوار لموقع جغرافي (إما من خلال عملية نشر أولية باستخدام واجهة سطر الأوامر أو إعداد وحدة التحكّم)، يمكن للمطوّرين أو المحرّرين أو مشرفي App Hosting العاديين نشر التعديلات. لا تكون أذونات الإدارة على مستوى المشروع مطلوبة لعمليات النشر الروتينية.
تشمل أذونات النشر النشطة ما يلي:
- التحقّق من ملكية الحزمة:
storage.buckets.list - تحميل أرشيف المصدر:
storage.objects.create - إنشاء المشغّل وطرحه: أذونات Hosting العادية (
apphosting.builds.createوapphosting.rollouts.create)
النشر من المصدر باستخدام واجهة سطر الأوامر Firebase
Firebase تتيح لك واجهة سطر الأوامر (CLI) الإصدار 14.4.0 والإصدارات الأحدث إرسال الرموز المصدر والإعدادات الخاصة بتطبيقك مباشرةً من جهازك المحلي إلى Firebase. ويكون ذلك مناسبًا إذا كنت تدير عمليات نشر أخرى في Firebase (مثل قواعد الأمان أو الدوال) وأردت نشر تطبيق الويب وخدمات الخلفية معًا باستخدام أمر واحد من واجهة سطر الأوامر.
المتطلبات الأساسية
- يجب أن تكون مشاريعك ضمن خطة Blaze.
- يجب استخدام الإصدار 14.4.0 من firebase-tools أو إصدار أحدث.
خطوات النشر
- نفِّذ
firebase init apphostingفي دليل مشروعك على جهاز المستخدم. - عندما يُطلب منك ذلك، اختَر استخدام مشروع حالي واختَر مشروع Firebase المستهدَف.
- اختَر إما نظامًا خلفيًا جديدًا أو حاليًا لنشره. تعمل هذه الخطوة على إعداد عمليات نشر 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 أو تفضّل إعدادًا مختلفًا لعملية التكامل المستمر/التسليم المستمر.
يمكن إجراء عمليات تحميل الأرشيف أثناء إنشاء الخلفية الأوّلية أو عند إنشاء عملية طرح يدوي على خلفية حالية، بما في ذلك الخلفيات التي تم نشرها في الأصل باستخدام واجهة سطر الأوامر Firebase.
التنسيقات المتوافقة
يتحقّق برنامج التحميل في وحدة التحكّم من صحة تنسيقَي الأرشيف المضغوط التاليَين ويقبلهما بشكلٍ تلقائي:
.zip.tgz
يتم عرض هذه التنسيقات بشكل صريح في نص وصف أداة تحميل الملفات.
خطوات النشر
الخيار (أ): أثناء عملية الإعداد الأوّلية للخادم الخلفي
- اختيار المصدر: في معالج إنشاء الخلفية، اختَر تحميل ملف مضغوط خلال خطوة "كيف تريد استيراد تطبيقك؟".
- الإعداد: يؤدي النقر على "التالي" إلى بدء عملية الإعداد في الخلفية، والتي تعمل على تفعيل Storage API بالتسلسل، والتأكّد من إعداد الأدوار الصحيحة، وإجراء عملية إدراج/تعديل في الحزمة. تعرض واجهة المستخدم رمز تحميل
دائريًا مع رسائل حالة ديناميكية: "جارٍ تفعيل واجهة برمجة التطبيقات..."، "جارٍ التحقّق من الأذونات..." و"جارٍ إعداد الحزمة..."
- التعامل مع الأخطاء وضوابط الحماية: في حال تعذُّر تنفيذ أي خطوة من خطوات الإعداد (مثل تلقّي مستخدم غير مالك رسالة الخطأ
403 PERMISSION_DENIEDبسبب عدم توفّر أذونات IAM كافية)، ستعرض واجهة المستخدم تحذيرًا مخصّصًا يطلب منك التواصل مع مالك المشروع. يتم إيقاف التنقّل باستخدام أزرار الخطوات بشكل صارم، ويظل الزر "التالي" والزر النهائي "إنهاء ونشر" غير مفعّلين إلى أن يتم حل المشكلة.
- التعامل مع الأخطاء وضوابط الحماية: في حال تعذُّر تنفيذ أي خطوة من خطوات الإعداد (مثل تلقّي مستخدم غير مالك رسالة الخطأ
- تحميل الملفات: بعد اكتمال عملية الإعداد بنجاح، اختَر ملف الأرشيف أو اسحبه إلى مكوّن أداة تحميل الملفات.
ضبط الإعدادات: حدِّد دليل جذر التطبيق (يكون تلقائيًا
/).انقر على إنهاء ونشر: يتم إيقاف الزر المستقل "إنهاء" لعمليات تحميل ملفات zip لأنّ تحميل الأرشيف هو إجراء يتم لمرة واحدة ويجب أن يتبعه نشر فوري لضمان توفّر خلفية برمجية تعمل بشكل سليم.
الخيار (ب): إنشاء طرح يدوي
- فتح مربّع الحوار: في لوحة بيانات Hosting، انقر على إنشاء طرح.
- اختيار المصدر: اختَر تحميل ملف zip في أداة الخطوات في مربّع الحوار. إذا لم يكن لدى الخلفية ربط حالي بحساب GitHub، سيتم إيقاف الخيار "GitHub".
- الإعداد والتحميل: يؤدي التحديد إلى بدء مسار الإعداد نفسه في الخلفية ("تفعيل واجهة برمجة التطبيقات..."، "جارٍ التحقّق من الأذونات..." و"جارٍ إعداد الحزمة..."). بعد اكتمال العملية بنجاح، اسحب ملف الأرشيف أو اختَره باستخدام أداة التحميل، وحدِّد دليل جذر التطبيق، ثم انقر على نشر لبدء عملية الإنشاء والطرح.
النشر باستخدام Terraform
إذا كنت بحاجة إلى تحكّم أكبر في عملية الإنشاء والبيئة التي تم نشرها، يمكنك النشر باستخدام Terraform. تتيح لك أداة Terraform تحديد موارد App Hosting وإدارتها باستخدام ملفات إعداد تعريفية، كما تتيح لك نشر صورة حاوية مسبقة الإنشاء مباشرةً إلى App Hosting بدلاً من الاعتماد على App Hosting لإنشاء صورة من رمز المصدر.
إذا كنت تستخدم Terraform للمرة الأولى، يمكنك الاطّلاع على البدء في استخدام Terraform وFirebase. إذا كنت على دراية بـ Terraform، يمكنك البدء باستخدام نماذج ملفات الإعداد وApp Hosting موارد أخرى.
إعداد عملية ربط GitHub لضمان التكامل المستمر/التسليم المستمر
يمكنك ربط مستودع GitHub في أي وقت من خلال علامة التبويب النشر في إعدادات الخلفية في وحدة تحكّم Firebase. يتيح لك ذلك نشر نموذج أولي للتطبيق من بيئة محلية، ثم الانتقال إلى مسار CI/CD آلي عندما تكون مستعدًا.
النشر باستخدام أدوات الذكاء الاصطناعي
سيتم إيقاف Firebase Studio نهائيًا في 22 مارس 2027. مع أنّ App Hosting الخلفية لن تتأثر، سيتم إيقاف الزر نشر في Firebase Studio. لمواصلة نشر التحديثات بدون تغيير عنوان URL، عليك نقل مشروعك. تعرَّف على كيفية نقل البيانات.