استخدام محاكي 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 CLI اختيار مشروع 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 في مرحلة الإنتاج.
  • إذا كنت تستخدم المحاكي لتطوير التطبيقات باستخدام دمج Data Connect pgvector وVertex API، يتم إجراء طلبات إلى واجهة برمجة التطبيقات Cloud Vertex API مباشرةً، بدلاً من إجراء ذلك من خلال دمج Vertex في Cloud SQL. ومع ذلك، سيستمر إرسال طلبات برمجية إلى واجهة برمجة التطبيقات العلنية، ما يعني أنّه عليك استخدام مشروع Firebase حقيقي، ولا يمكنك استخدام مشروع demo-، وسيتم تحمُّل تكاليف Vertex API.