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

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

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

الخطوات اللاحقة