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

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

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

المتطلبات الأساسية

  • تم تخزين رمز تطبيقك في GitHub.
  • لقد سبق لك إنشاء مشروع مميز لكل بيئة من بيئتك، مثل my-production-firebase-project وmy-staging-firebase-project. احرص على وضع علامة على مشروع Firebase للإنتاج باستخدام نوع البيئة "production".
  • في كل مشروع، أنشأت خلفية 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.appspot.com
    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.appspot.com
    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.

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