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