نشر بيئات متعددة من قاعدة رموز

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

يوضّح هذا الدليل كيفية نشر بيئة إنتاج وبيئة تنظيم، كل منهما في مشروع منفصل على 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 على إعداد اسم البيئة. يتم استخدام هذا الحقل لربط الخلفية بملف إعدادات خاص بالبيئة، ويمكن تغييره في أي وقت. يمكنك ضبط اسم بيئة واحد فقط لكل خلفيّة.

لضبط اسم بيئة الخلفية، اتّبِع الخطوات التالية:

  1. في "وحدة تحكّم Firebase"، اختَر مشروعك التجريبي (في هذا المثال، my-staging-firebase-project).
  2. انقر على App Hosting من شريط التنقّل الأيمن.
  3. انقر على عرض لوحة البيانات في الخلفية التي اخترتها.
  4. في علامة التبويب الإعدادات، اختَر النشر.
  5. ضمن اسم البيئة، أدخِل اسم بيئتك. يمكنك تسمية البيئة كما تشاء. في هذا المثال، تكون القيمة مرحلة الإعداد.
  6. انقر على حفظ.

عند بدء عملية طرح 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.

الخطوات التالية