التعرّف على "استضافة التطبيقات" وآلية عملها

تعالج خدمة "استضافة التطبيقات" سلسلة معقّدة من المهام في الخلفية لتبسيط عملية نشر تطبيقك. وتصف هذه الصفحة الأجزاء الرئيسية لمسار المهمة هذا، وتوفِّر معلومات حول النقاط التي قد تريد فيها تخصيص المسار حسب احتياجات تطبيقك.

دعم إطار العمل

توفّر خدمة "استضافة التطبيقات" إمكانية إنشاء ونشر تطبيقات الويب التي تم تطويرها بدون الحاجة إلى إعداد تطبيقات الويب التالية:

  • الإصدار 13 من Next.js والإصدارات الأحدث
  • Angular 17.2 أو إصدار أحدث

تحدِّد ميزة "استضافة التطبيقات" إطار العمل الذي تستخدمه من خلال فحص ملف package-lock.json أو أي ملف قفل آخر في المستودع. إذا حاولت نشر تطبيق Node.js يفتقد إلى ملف قفل، لن تتمكّن خدمة App Hosting من إنشاء تطبيقك وتشغيله. يمكنك إنشاء package-lock.json من خلال تشغيل npm install في الدليل الجذر.

هناك محوّلان لإطار عمل "استضافة التطبيقات" دورَين رئيسيَين:

  1. وتحلّل هذه الأنظمة رمز المصدر وأي ملفات إعداد خاصة بإطار العمل (مثل next.config.js) لفهم سلوك تطبيقك الذي تم ضبطه.
  2. يُطلق على تطبيقك أمر الإصدار لإنشاء مواد عرض ثابتة وإنشاء إصدار مُحسَّن من تطبيقك للإنتاج.

تعمل محوّلات إطار العمل على إنشاء تطبيق Node.js باستخدام npm run build، وهي تعمل بشكل أفضل مع النصوص البرمجية التلقائية لكل إطار عمل: next build لـ Next.js وng build لـ Angular. ستحاول "استضافة التطبيق" إجراء إصدارات باستخدام أوامر إنشاء مخصّصة، ولكن لا يمكن أن تضمن النجاح بشكل موثوق.

آلية عمل تكامل مستودع استضافة التطبيقات

يتعامل مع الاتصال المهم بين مستودع GitHub وخلفية "استضافة التطبيقات" من خلال Developer Connect، وهي منصة الاتصال في Google Cloud لأدوات DevOps الخارجية. أثناء إنشاء خلفية "استضافة التطبيقات"، يرشدك سير عمل واجهة المستخدم في Developer Connect خلال عملية تثبيت تطبيق Firebase GitHub. وتشمل الخطوات الأساسية في هذه العملية ما يلي:

  1. أنت تمنح Developer Connect دور مشرف المدير السري. يتيح ذلك للنظام تخزين بيانات الاعتماد بأمان على أنّها "أسرار" في Cloud Secret Manager.
  2. أنت تفوّض تطبيق GitHub في Firebase بالوصول إلى مستودع GitHub.
  3. تخزّن أداة Developer Connect رمزًا مميزًا مخصصًا لتفويض GitHub في مستودع مدير أسرار المشروع ولا تعدل هذا الرمز أو تحذفه.

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

التكامل مع Firebase وخدمات Google الأخرى

تعمل ميزة "استضافة التطبيقات" على إعداد بيئتَي الإنشاء والتشغيل كي تتمكّن من إعداد حزمة تطوير البرامج (SDK) لمشرف Firebase باستخدام بيانات الاعتماد التلقائية لتطبيق Google. وبهذه الطريقة، يمكن للخلفية التواصل مع منتجات Firebase الأخرى أثناء عملية الإنشاء والنشر.

حساب خدمة الواجهة الخلفية "استضافة التطبيق"

أثناء عملية الإنشاء وفي وقت التشغيل، تتم مصادقة الواجهة الخلفية لاستضافة التطبيق مع خدمات Google الأخرى من خلال حساب الخدمة. ويتم إنشاء حساب خدمة تلقائي لهذه الأغراض في المرة الأولى التي تفعّل فيها ميزة "استضافة التطبيقات" في مشروع Firebase:

firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com

ينطبق حساب الخدمة هذا على جميع الخلفيات تلقائيًا ولديه مجموعة قليلة من الأذونات للسماح لك بإنشاء تطبيقك وتشغيله ومراقبته. وتمتلك الإذن أيضًا بمصادقة حزمة تطوير البرامج (SDK) للمشرف باستخدام بيانات الاعتماد التلقائية للتطبيق، لتنفيذ عمليات مثل تحميل البيانات من Cloud Firestore. يمكنك الاطّلاع على أدوار استضافة تطبيقات Firebase.

إذا كان تطبيقك بحاجة إلى التفاعل مع خدمات إضافية من Google إما في وقت الإصدار أو من خلفية قيد التشغيل، يمكنك تخصيص حساب الخدمة التلقائي عن طريق إضافة الأدوار. على سبيل المثال، إذا كان تطبيقك يتطلب أذونات لاستخدام Vertex AI، قد تحتاج إلى إضافة roles/aiplatform.user أو دور ذي صلة.

المصطلحات والتعريفات الرئيسية

  • الخلفية: مجموعة الموارد المُدارة التي تنشئها خدمة "استضافة التطبيق" لإنشاء تطبيق الويب وتشغيله.
  • الطرح: هو إصدار محدّد من تطبيقك المباشر مرتبط بخطة git Commit.
  • الفرع المباشر: هو فرع مستودع GitHub الذي يتم نشره على عنوان URL المنشور. غالبًا ما يكون الفرع الذي يتم دمج فروعه أو فروع التنمية فيه.

القيود والمشاكل المعروفة

هناك بعض القيود المعروفة لمعاينة "استضافة التطبيق":

  • لا تتوفّر ميزة تحسين الصور حتى الآن.
  • في بعض الحالات، قد تعرض إحدى الخلفيات الخاصة بـ "استضافة التطبيق" Intermittent connection error رسائل على عنوان URL لتطبيقك. سيكون الحل متاحًا في إصدار لاحق.
  • يتم تعديل عناوين ذاكرة التخزين المؤقت لقصر ذاكرات التخزين المؤقت على شبكة توصيل المحتوى (CDN) على 60 ثانية. وفي المستقبل، عندما يكون لدى App Hosting إمكانية إزالة ذاكرة التخزين المؤقت بسرعة عند النشر، ستتم إزالة هذا الحد.
  • يتم عرض الملفات الثابتة غير المخزّنة مؤقتًا من خلال Cloud Run، أمّا في إصدار لاحق، فسيتم تخزينها وعرضها من مصدر استضافة التطبيقات للحصول على أداء أفضل.
  • وستتوفر النطاقات الفرعية التي تتضمّن أحرف البدل كنطاقات مخصَّصة في إصدار لاحق.
  • قد لا يتم عرض رموز التخزين التعريفية لخدمة "استضافة التطبيق" في صفحة استخدام الخلفية في وحدة تحكُّم Firebase. وستكون متوفرة في إصدار لاحق.
  • قد تعرض وحدة تحكُّم Firebase من حين لآخر رسالة الخطأ "لم يتم العثور على الإصدار وأنه غير صالح" عند إنشاء الواجهة الخلفية.
  • لا تتوفر حاليًا المشاريع التي تحتوي على ملفات package.json مدمَجة، بغض النظر عمّا إذا تم ضبط root\_directory مع وحدة تحكُّم Firebase أو واجهة سطر الأوامر. سيتوفّر حل في إصدار لاحق.
  • في الوقت الحالي، تشترك جميع الخلفيات في المشروع نفسه في مؤسسة/حساب GitHub. ويمكن ربطها بمستودعات مختلفة ضمن تلك المؤسسة أو الحساب. لإنشاء خلفيات مرتبطة بحسابات GitHub مختلفة، ضعها في مشروعات منفصلة.
  • في الوقت الحالي، يُسمح فقط بمنطقة us-central1.