استخدام محاكي Data Connect لـ CI/CD

يوفر لك Firebase Data Connect محاكيًا محليًا للنماذج الأولية الشاملة بالإضافة إلى التكامل المستمر وتدفقات النشر المستمر (CI/CD):

  • ويتفاعل محاكي Data Connect مع مثيل قاعدة بيانات PGLite المتكاملة محليًا لكي يتيح لك إنشاء نماذج أولية لطلبات البحث والطفرات واختبار رمز العميل في بيئة محلية بالكامل.
  • يمكن أيضًا استخدام المحاكي Data Connect للمهام غير التفاعلية. يتيح لك هذا الإجراء إجراء اختبارات آلية وهو مناسب للاستخدام مع مهام سير العمل المتعلّقة بالتكامل المستمر/النشر المستمر (CI/CD). يكون ذلك مفيدًا عندما تكون المخططات مستقرة وتريد إنشاء نماذج أولية واختبار الرمز البرمجي من جهة العميل.

يتناول هذا الدليل تثبيت المحاكي واستخدامه بشكل أكثر تفصيلاً من دليل البدء السريع.

تثبيت محاكي "Data Connect"

قبل تثبيت Local Emulator Suite لاستخدام محاكي Data Connect ، ستحتاج إلى ما يلي:

  • الإصدار 18.0 من Node.js أو إصدار أحدث

تثبيت واجهة سطر أوامر Firebase وإعداد دليل المشروع

  1. ثبِّت Firebase CLI باتّباع دليل التثبيت. احرص على التحديث بانتظام، لأنّه يتم تطوير محاكي Data Connect بشكل نشط من خلال إصلاح الأخطاء وإضافة ميزات جديدة.

  2. إذا لم يسبق لك إجراء ذلك، عليك إعداد الدليل الحالي للعمل على أنّه مشروع على Firebase، مع اتّباع التعليمات لتحديد المنتجات التي تريد استخدامها:

    firebase init

ضبط إعدادات Local Emulator Suite أو تعديلها

إذا كنت قد بدأت محاكي Data Connect من إضافة Data Connect VS Code، تم تثبيت المحاكي نيابةً عنك، إذا لزم الأمر.

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

  firebase init emulators

بعد تثبيت المحاكي، لن يتم إجراء عمليات فحص للتحديثات ولن يتم إجراء عمليات تنزيل إضافية تلقائية إلى أن يتم تحديث إصدار Firebase CLI.

اختيار مشروع على Firebase

أثناء عملية الإعداد، يطلب منك واجهة سطر الأوامر Firebase اختيار مشروع Firebase أو إنشائه. إذا اخترت مشروعًا حاليًا أعددته باستخدام Data Connect في وحدة تحكّم Firebase، سيتم اقتراح الإعدادات التي اخترتها هناك.

إعداد المحاكي

ضبط المحاكي

سيرشدك تشغيل عملية firebase init إلى خيارات إعداد المحاكي. مثل المحاكيات الأخرى في Local Emulator Suite، يتم تخزين مَعلمات الضبط في ملفات المشاريع المحلية.

  • يحتوي ملف firebase.json على عمليات تخصيص منافذ المحاكي.
    • لا ينطبق مفتاح emulators:ui على المحاكي Data Connect .

العمل مع مراجع Data Connect المحلية والخاصة بإصدار العلني

إذا كنت تريد التأكّد من عدم التأثير في موارد الإنتاج، اضبط demo- projectID أو تأكَّد من تجهيز رمز العميل للاتصال بالمحاكي، كما هو موضّح في قسم لاحق.

ابدأ تشغيل المحاكي.

إذا كنت تشغّل المحاكي بشكل غير تفاعلي، مثلاً لعمليات سير العمل المتعلّقة بالتكامل/النشر المستمر (CI/CD)، ابدأه باستخدام الخيار exec.

firebase emulators:exec ./path/to/test-script.sh

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

firebase emulators:start

تجهيز رمز العميل للتواصل مع المحاكي

يمكنك إعداد الإعدادات داخل التطبيق أو صفوف الاختبار للتفاعل مع محاكي "Data Connect" على النحو التالي.

JavaScript
import { initializeApp } from "firebase/app";
import { connectorConfig } from "@name-of-package";
import { connectDataConnectEmulator, getDataConnect } from 'firebase/data-connect';

// TODO: Replace the following with your app's Firebase project configuration
const firebaseConfig = {
  //...
};

const app = initializeApp(firebaseConfig);

const dataConnect = getDataConnect(app, connectorConfig);
connectDataConnectEmulator(dataConnect, "localhost", 9399);

// Make calls from your app
  
‫Kotlin Android
val connector = MoviesConnector.instance

// Connect to the emulator on "10.0.2.2:9399"
connector.dataConnect.useEmulator()

// (Alternatively) if you're running your emulator on non-default port:
connector.dataConnect.useEmulator(port = 9999)

// Make calls from your app
  
iOS
let connector = DataConnect.dataConnect(DefaultConnectorClient.connectorConfig)

// Connect to the emulator on "127.0.0.1:9399"
connector.useEmulator()

// (alternatively) if you're running your emulator on non-default port:
connector.useEmulator(port: 9999)

// Make calls from your app
  

استخدام المحاكي للاختبار والدمج المستمر

تشغيل صور Local Emulator Suite مُنشأة في حاويات

إنّ عملية تثبيت Local Emulator Suite وإعداده باستخدام الحاويات في عملية إعداد CI نموذجية هي عملية مباشرة.

في ما يلي بعض المشاكل التي يجب أخذها في الاعتبار:

  • يتم تثبيت ملفات المحاكي الثنائية وتخزينها مؤقتًا في ‎~/.cache/firebase/emulators/. قد تحتاج إلى إضافة هذا المسار إلى إعدادات ملف التخزين المؤقت لـ CI لتجنُّب عمليات التنزيل المتكرّرة.
  • إذا لم يكن لديك ملف firebase.json في مستودعك، عليك إضافة وسيطة سطر أوامر إلى الأمر emulators:start أو emulators:exec لتحديد المحاكيات التي يجب تشغيلها. على سبيل المثال، --only dataconnect.

محو قاعدة بياناتك بين الاختبارات

لإعادة ضبط البيئات الاختبارية بين عمليات التشغيل، تنصح Firebase بما يلي:

  • كتابة تغييرات مخصّصة لمعالجة ما يلي:
    • في عملية الإعداد، املأ مثيل قاعدة بيانات محلية باستخدام البيانات الأساسية.
    • في عملية الإزالة، احذف البيانات المعدَّلة من مثيل قاعدة بيانات ما بعد الاختبار.

أوجه الاختلاف بين محاكي Data Connect والإصدار العلني

يحاكي محاكي Data Connect العديد من ميزات المنتج من جهة الخادم. ومع ذلك، هناك بعض الاستثناءات التي يجب أخذها في الاعتبار:

  • قد يختلف إصدار PGLite وإعداداته التفصيلية عن إصدار مثيل Cloud SQL في مرحلة الإنتاج.
  • إذا كنت تستخدم المحاكي للتطوير من خلال دمج واجهة برمجة تطبيقات pgect وVertex API من Data Connect، يتم إجراء الطلبات إلى واجهة برمجة التطبيقات Cloud Vertex API مباشرةً، بدلاً من دمج Vertex في Cloud SQL. ومع ذلك، سيستمر إرسال طلبات برمجية إلى واجهة برمجة التطبيقات العلنية، ما يعني أنّه عليك استخدام مشروع Firebase حقيقي، ولا يمكنك استخدام مشروع demo-، وسيتم تحمُّل تكاليف Vertex API.