من الشائع نشر بيئات متعددة من قاعدة الرموز البرمجية نفسها، مع اختلاف طفيف في الإعدادات بين كل بيئة. على سبيل المثال، قد تريد تخصيص وحدة معالجة مركزية وذاكرة وصول عشوائي أقل لبيئة التنظيم، أو قد تريد التأكّد من أنّ بيئة الإعداد تحتفظ بنسخة واحدة على الأقل نشطة وجاهزة لتلقّي الطلبات. قد تريد أيضًا تحديد متغيّرات بيئة وأسرار مختلفة استنادًا إلى البيئة والموارد التي تريد استخدامها.
يوضّح هذا الدليل كيفية نشر بيئة إنتاج وبيئة تنظيم، كلّ منهما في مشروع منفصل على Firebase. باتّباع المبادئ نفسها، يمكنك النشر في أنواع مختلفة أخرى من البيئات. لمزيد من المعلومات عن البيئات، يُرجى الاطّلاع على نظرة عامة على البيئات وأفضل الممارسات العامة لإعداد مشاريع Firebase.
المتطلبات الأساسية
- تم تخزين الرمز البرمجي لتطبيقك في GitHub.
- سبق أن أنشأت مشروعًا مميزًا لكل بيئة من بيئاتك، على سبيل المثال
my-production-firebase-projectوmy-staging-firebase-project. تأكَّد من وضع علامة "الإعداد" على نوع بيئة مشروع Firebase الخاص بالإعداد. - في كل مشروع، أنشأت برنامجًا للواجهة الخلفية في App Hosting، مع ضبط الفرع المباشر على فرع GitHub الذي تريد نشره (مثل
main). لمزيد من المعلومات، يُرجى الاطّلاع على مقالة بدء استخدام App Hosting.
الخطوة 0: إنشاء إعدادات تلقائية في apphosting.yaml
App Hosting تتيح استخدام ملف إعداد يُسمّى apphosting.yaml لإدارة
إعدادات وقت التشغيل (وحدة المعالجة المركزية، والتزامن، وحدود الذاكرة، وما إلى ذلك) ومتغيّرات البيئة لتطبيقك. وتتيح أيضًا الإشارات إلى الأسرار المُدارة باستخدام
Cloud Secret Manager، ما يجعل من الآمن تسجيلها في نظام التحكّم بالمصادر. لمزيد من
المعلومات، يُرجى الاطّلاع على مقالة ضبط واجهة خلفية.
للبدء، أنشِئ ملفًا باسم apphosting.yaml في الدليل الجذري لتطبيقك.
هذا هو ملف الإعداد الاحتياطي الذي يتم استخدامه عندما لا يتم العثور على ملف إعداد خاص بالبيئة. يجب أن تكون القيم المخزّنة في apphosting.yaml قيمًا تلقائية آمنة للاستخدام في جميع البيئات.
توضّح الأقسام التالية كيفية إلغاء القيم التلقائية في apphosting.yaml لبيئات معيّنة. ينشئ مسار المثال هذا بيئة تنظيم.
الخطوة 1: ضبط اسم البيئة
لكل واجهة خلفية App Hosting إعداد اسم البيئة. يُستخدم هذا الحقل لربط الواجهة الخلفية بملف إعداد خاص بالبيئة، ويمكن تغييره في أي وقت. يمكنك ضبط اسم بيئة واحد فقط لكل واجهة خلفية.
لضبط اسم بيئة الواجهة الخلفية، اتّبِع الخطوات التالية:
- في وحدة تحكُّم Firebase، اختَر مشروع التنظيم (في هذا المثال،
my-staging-firebase-project). - انتقِل إلى الاستضافة والخدمات بلا خادم > App Hosting.
- انقر على عرض لوحة البيانات في الواجهة الخلفية التي اخترتها.
- في علامة التبويب الإعدادات ، اختَر البيئة.
- ضمن اسم البيئة، أدخِل اسم بيئتك. يمكنك تسمية البيئة كما تشاء. في هذا المثال، هي التنظيم.
- انقر على حفظ.
عندما يتم بدء عملية نشر في App Hosting لواجهة الخلفية (إما عند تنفيذ الأمر git
push أو يدويًا من خلال Firebase console)، ستتحقّق خدمة App Hosting من وجود ملف apphosting.ENVIRONMENT_NAME.yaml قبل
الرجوع إلى apphosting.yaml.
الخطوة 2: إنشاء ملف apphosting.yaml الخاص بالبيئة
لإعداداتك الخاصة بالبيئة، أنشِئ ملفًا بالاسم
apphosting.ENVIRONMENT_NAME.yaml لتحديد عمليات الإلغاء الخاصة بالبيئة. يتّخذ هذا الملف التنسيق نفسه لـ
التلقائي apphosting.yaml ويجب أن يكون موجودًا في
الدليل الجذري لتطبيقك بجانب apphosting.yaml.
في مدّة التصميم، App Hosting تدمج هذَين الملفَين، مع منح الأولوية للقيم في ملف YAML الخاص بالبيئة على ملف apphosting.yaml
الأساسي.
في هذا المثال، ستنشئ ملفًا باسم apphosting.staging.yaml في الدليل الجذري للتطبيق:
runConfig:
cpu: 1
memoryMiB: 512
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
لنفترض أنّ لديك ملفًا باسم apphosting.yaml يبدو على النحو التالي:
runConfig:
cpu: 3
memoryMiB: 1024
maxInstances: 4
minInstances: 0
concurrency: 100
env:
- variable: API_URL
value: api.service.com
availability:
- BUILD
- RUNTIME
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
ستبدو النتيجة النهائية المدمجة، التي يمكنك الاطّلاع عليها في سجلّات Cloud Build، على النحو التالي:
runConfig:
cpu: 1
memoryMiB: 512
maxInstances: 4
minInstances: 0
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
يُرجى العِلم أنّه تم أيضًا استبدال بعض قيم runConfig، مثل وحدة المعالجة المركزية، بالإضافة إلى أي متغيّرات بيئة متداخلة.
الخطوة 3: تفعيل قاعدة الرموز البرمجية
بعد الانتهاء من تعديل ملف apphosting.ENVIRONMENT_NAME.yaml الخاص بالبيئة، عليك تحميل الملف إلى GitHub:
$ git add apphosting.<ENVIRONMENT_NAME>.yaml
$ git commit -m "Added environment specific yaml file"
$ git push
ستستخدم أي واجهات خلفية تم وضع علامة اسم البيئة عليها قيم الإلغاء المحدّدة في ملف YAML المقابل، وسترجع إلى apphosting.yaml عندما لا يتم العثور على قيمة. بالنسبة إلى الواجهات الخلفية التي ليس لها اسم بيئة مرتبط، يمكنك مواصلة استخدام apphosting.yaml.
الخطوات التالية
- تعمّق أكثر: يمكنك الاطّلاع على درس تطبيقي حول الترميز على Firebase يدمج تطبيقًا مستضافًا مع "مصادقة Firebase" وميزات Google AI: Next.js | Angular
- ربط نطاق خاص.
- ضبط الواجهة الخلفية.
- مراقبة عمليات النشر واستخدام الموقع الإلكتروني والسجلّات