طرق بديلة للنشر في "استضافة التطبيقات"

في معظم الأحيان، ننصح باستخدام عمليات الطرح التلقائية أو عمليات الطرح التي يتم تشغيلها يدويًا من وحدة تحكّم Firebase. ومع ذلك، قد تحتاج إلى مسار نشر أكثر تخصيصًا. تتضمّن App Hosting خيارات متعدّدة للنشر المخصّص.

النشر من المصدر

يتيح لك النشر من المصدر إرسال رمز المصدر وإعدادات تطبيقك مباشرةً إلى App Hosting بدون الحاجة إلى ربط دائم بحساب GitHub.

عند النشر من المصدر، تحمّل App Hosting رمز المصدر إلى حزمة Google Cloud Storage، وتنفّذ أمر الإنشاء الخاص بإطار العمل في Cloud Build، وتنشر العناصر المجمّعة إلى Cloud Run وCloud CDN. يتم استخدام عملية التصميم نفسها لعمليات نشر المصدر المحلي كما هو الحال مع عمليات النشر من GitHub. إذا كان ملف .gitignore متوفّرًا في مشروعك، سيتم استبعاد الملفات والمجلدات المدرَجة بداخله من عملية النشر.

يمكنك تفعيل من مصدر محلي باستخدام واجهة سطر الأوامر Firebase أو وحدة تحكّم Firebase.

أذونات إدارة الهوية وإمكانية الوصول المطلوبة وإعداد البنية الأساسية

بما أنّ كلّاً من واجهة سطر الأوامر Firebase ووحدة تحكّم Firebase تستخدمان البنية الأساسية نفسها في الخلفية لتخزين وإنشاء أرشيفات المصدر، تنطبق متطلبات أذونات إدارة الهوية وإمكانية الوصول نفسها على كلتا طريقتَي النشر.

تعتمد المتطلبات الدقيقة على ما إذا كنت ستنفّذ عملية النشر في موقع جغرافي (منطقة) محدّد للمرة الأولى أم لا. لمزيد من المعلومات عن الأذونات، يُرجى الاطّلاع على نظرة عامة على إدارة الهوية وإمكانية الوصول (IAM) في Firebase وأذونات Firebase App Hosting المحدّدة.

الأذونات المطلوبة لإعداد الجهاز لأول مرة (عملية النشر الأولى في موقع جغرافي)

عند بدء عملية نشر مصدر محلي في موقع مشروع للمرة الأولى، يجب أن توفّر App Hosting حزمة GCS لتخزين الأرشيفات ومنح "وكيل خدمة App Hosting" إذن الوصول إليها. بما أنّ هذه المهام إدارية على مستوى المشروع، فهي تتطلّب أذونات "مالك المشروع" أو "مشرف إدارة الهوية وإمكانية الوصول". لا يمكن للمستخدم الذي لديه دور "محرِّر" أو "مُشاهد" أساسي إجراء عملية الإعداد الأولية هذه وسيتم حظره.

تشمل أذونات الإعداد المسبق ما يلي:

  • تفعيل Storage API: serviceusage.services.enable
  • إنشاء حزمة المصدر: storage.buckets.create وstorage.buckets.list
  • ضبط Service Agent: امنح resourcemanager.projects.setIamPolicyApp Hosting إذن الوصول للقراءة (roles/storage.objectViewer) كي يتمكّن من جلب الرمز الذي تم تحميله أثناء عمليات الإنشاء.

عند النشر الأوّلي، يتم إنشاء حزمة GCS بدورة حياة تبلغ 30 يومًا، وبعدها يتم حذف الحزمة. ومع ذلك، يمكنك إدارة هذا الإطار الزمني في Cloud Console ضمن Cloud Storage -> الحِزم -> مدة البقاء -> القواعد. راجِع مقالة إدارة دورات حياة العناصر.

الأذونات اللازمة لعمليات النشر اللاحقة (بعد إعداد الموقع الجغرافي)

بعد إعداد حزمة المصدر وعمليات ربط الأدوار لموقع جغرافي (إما من خلال عملية نشر أولية باستخدام واجهة سطر الأوامر أو إعداد وحدة التحكّم)، يمكن للمطوّرين العاديين أو المحرّرين أو App Hosting المشرفين نشر التعديلات. لا تكون أذونات الإدارة على مستوى المشروع مطلوبة لعمليات النشر الروتينية.

تشمل أذونات النشر النشطة ما يلي:

  • التحقّق من ملكية الحزمة: storage.buckets.list
  • تحميل أرشيف المصدر: storage.objects.create
  • إنشاء عامل التفعيل وطرحه: أذونات App Hosting العادية (apphosting.builds.create وapphosting.rollouts.create)

النشر من المصدر باستخدام واجهة سطر الأوامر Firebase

Firebase تتيح لك واجهة سطر الأوامر (CLI) الإصدار 14.4.0 والإصدارات الأحدث نقل الرمز المصدري لتطبيقك وإعداداته مباشرةً من جهازك المحلي إلى Firebase. يكون ذلك مناسبًا إذا كنت تدير عمليات نشر أخرى في Firebase (مثل قواعد الأمان أو الدوال) وأردت نشر تطبيق الويب والخدمات الخلفية معًا باستخدام أمر واحد من واجهة سطر الأوامر.

المتطلبات الأساسية

  • يجب أن تكون مشاريعك ضمن خطة Blaze.
  • يجب استخدام الإصدار 14.4.0 من firebase-tools أو إصدار أحدث.

خطوات النشر

  1. نفِّذ firebase init apphosting في دليل مشروعك على جهاز المستخدم.
  2. عندما يُطلب منك ذلك، اختَر استخدام مشروع حالي واختَر مشروع Firebase المستهدَف.
  3. اختَر إما نظامًا خلفيًا جديدًا أو حاليًا لنشره. تعمل هذه الخطوة على إعداد عمليات نشر App Hosting لدليلك المحلي وتطلب منك إدخال تفاصيل الإعدادات:
    • رقم تعريف الخلفية المطلوب نشرها
    • المنطقة التي سيتم النشر فيها، في حال إنشاء خلفية جديدة
    • مسار الدليل الجذري للرمز البرمجي لتطبيقك
    • وقت تشغيل 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" (تحميل ملف ZIP)

توفّر Firebase وحدة التحكّم واجهة رسومية لنشر التطبيقات من خلال تحميل أرشيف مضغوط للمصدر مباشرةً. ويشكّل هذا الخيار بديلاً عن مسار الربط بحساب GitHub، وذلك في الحالات التي تفضّل فيها عدم استخدام GitHub أو تفضّل إعدادًا مختلفًا لعملية التكامل المستمر/التسليم المستمر.

يمكن إجراء عمليات تحميل الأرشيف أثناء إنشاء الخلفية الأوّلية أو عند إنشاء طرح يدوي على خلفية حالية، بما في ذلك الخلفيات التي تم نشرها في الأصل باستخدام واجهة سطر الأوامر Firebase.

التنسيقات المتوافقة

يتحقّق برنامج التحميل على وحدة التحكّم من صحة تنسيقَي الأرشيف المضغوط التاليَين ويقبلهما:

  • .zip
  • .tgz

يتم عرض هذه التنسيقات بشكل صريح في نص وصف أداة تحميل الملفات.

خطوات النشر

الخيار (أ): أثناء عملية الإعداد الأوّلية للخادم الخلفي
  1. اختيار المصدر: في معالج إنشاء الخلفية، اختَر تحميل ملف مضغوط خلال خطوة "كيف تريد استيراد تطبيقك؟".
  2. التحضير لعملية الإعداد: يؤدي النقر على "التالي" إلى بدء عملية التحضير في الخلفية، والتي تعمل على تفعيل Storage API بالتسلسل، والتأكّد من إعداد الأدوار الصحيحة، وإجراء عملية إدراج أو تعديل في الحزمة. تعرض واجهة المستخدم أداة تحميل دائرية مع رسائل حالة ديناميكية: "تفعيل واجهة برمجة التطبيقات..." "جارٍ التحقّق من الأذونات..." و"جارٍ إعداد الحزمة..."
    • التعامل مع الأخطاء وضوابط الحماية: في حال تعذُّر تنفيذ أي خطوة من خطوات الإعداد (مثل تلقّي مستخدم غير المالك 403 PERMISSION_DENIED بسبب عدم توفّر أذونات IAM كافية)، ستعرض واجهة المستخدم تحذيرًا مخصّصًا يطلب منك التواصل مع مالك المشروع. يتم قفل التنقّل عبر الخطوات بشكل صارم، ويبقى الزر "التالي" والزر النهائي "إنهاء ونشر" غير مفعّلين إلى أن يتم حلّ المشكلة.
  3. تحميل الملفات: بعد اكتمال عملية الإعداد بنجاح، اختَر ملف الأرشيف أو اسحبه إلى مكوّن أداة تحميل الملفات.
  4. ضبط الإعدادات: حدِّد دليل جذر التطبيق (القيمة التلقائية هي /).

  5. انقر على إنهاء ونشر: يتم إيقاف الزر "إنهاء" المستقل لعمليات تحميل ملفات zip لأنّ تحميل الأرشيف هو إجراء يتم لمرة واحدة ويجب أن يتبعه نشر فوري لضمان توفّر خلفية برمجية تعمل.

الخيار (ب): إنشاء طرح يدوي
  1. فتح مربّع الحوار: في لوحة بيانات App Hosting، انقر على إنشاء طرح.
  2. اختيار المصدر: انقر على تحميل ملف zip في أداة الخطوات في مربّع الحوار. إذا لم يكن هناك ربط حالي بحساب GitHub في الخلفية، سيتم إيقاف الخيار "GitHub".
  3. الإعداد والتحميل: يؤدي التحديد إلى تشغيل عملية الإعداد نفسها في الخلفية ("تفعيل واجهة برمجة التطبيقات..."، جارٍ التحقّق من الأذونات..." و"جارٍ إعداد الحزمة..."). بعد اكتمال العملية بنجاح، اسحب ملف الأرشيف أو اختَره باستخدام أداة التحميل، وحدِّد دليل جذر التطبيق، ثم انقر على نشر لبدء عملية الإنشاء والطرح.

النشر باستخدام 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، عليك نقل مشروعك. كيفية نقل البيانات