من الشائع أن يتم نشر بيئات متعددة من قاعدة الرموز البرمجية نفسها، مع اختلاف خفيف في الإعدادات لكل بيئة. على سبيل المثال، قد تحتاج إلى منح موارد أقل من وحدة المعالجة المركزية وذاكرة الوصول العشوائي لبيئات الاختبار، أو قد تحتاج إلى التأكّد من أنّ بيئة الإنتاج تحتفظ بمثيل واحد على الأقل نشطًا وجاهزًا لمعالجة الطلبات. قد تحتاج أيضًا إلى تحديد متغيّرات بيئة و أسرار مختلفة حسب البيئة والموارد التي تريد استخدامها.
يوضّح هذا الدليل كيفية نشر بيئة إنتاج وبيئة تنظيم، كل منهما في مشروع منفصل على 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 أو يدويًا من خلال وحدة التحكّم)، سيبحث 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 Authentication وتكنولوجيات الذكاء الاصطناعي من Google: Next.js | Angular
- ربط نطاق مخصّص
- ضبط الخلفية
- مراقبة عمليات الطرح واستخدام الموقع الإلكتروني والسجلّات