שימוש באמולטור Data Connect ל-CI/CD

Firebase Data Connect מספק אמולטור מקומי ליצירת אב טיפוס מקצה לקצה, וכן תהליכי אינטגרציה רציפה (CI) ופיתוח רציף (CD):

  • המהדר של Data Connect יוצר אינטראקציה עם מכונה מקומית משולבת של מסד נתונים של PGLite, כדי לאפשר לכם ליצור אב טיפוס של שאילתות ומוטציות ולבדוק את קוד הלקוח בסביבה מקומית לחלוטין.
  • אפשר להשתמש במהדורת המהופעל של Data Connect גם לעבודה לא אינטראקטיבית. הוא מאפשר להריץ בדיקות אוטומטיות ומתאים לשימוש בתהליכי עבודה של CI/CD. האפשרות הזו שימושית כשהסכמות יציבות ואתם רוצים ליצור אב טיפוס ולבדוק קוד מצד הלקוח.

המדריך הזה מכיל הוראות מפורטות יותר להתקנה ולשימוש במהדורת האדמין, בהשוואה למדריך למתחילים.

התקנת האמולטור של Data Connect

לפני שמתקינים את Local Emulator Suite כדי להשתמש במהדמה של Data Connect, צריך:

  • Node.js מגרסה 18.0 ואילך.

התקנת ה-CLI של Firebase והגדרת ספריית הפרויקט

  1. מתקינים את ה-CLI של Firebase בהתאם למדריך ההתקנה. חשוב לעדכן את האפליקציה באופן קבוע, כי הסימולטור של Data Connect נמצא בפיתוח פעיל עם תיקוני באגים ותכונות חדשות.

  2. אם עדיין לא עשיתם זאת, צריך לאתחל את ספריית העבודה הנוכחית כפרויקט Firebase, תוך ציון המוצרים שבהם רוצים להשתמש:

    firebase init
    

הגדרה או שינוי של ההגדרות של Local Emulator Suite

אם הפעלתם את האמולטור של Data Connect מהתוסף של Firebase ל-VS Code, האמולטור הותקן בשבילכם, אם היה צורך בכך.

אפשר להשתמש ב-CLI של Firebase כדי להתקין את האמולטור באופן ידני יחד עם רכיבים נבחרים אחרים של Local Emulator Suite. הפקודה הזו מפעילה אשף הגדרות שמאפשר לבחור את הסימולטורים הרצויים, להוריד את הקבצים הבינאריים המתאימים של הסימולטורים ולהגדיר את יציאות הסימולטורים אם הגדרות ברירת המחדל לא מתאימות.

  firebase init emulators

אחרי שמתקינים אמולטור, לא מתבצעות בדיקות עדכונים ולא מתבצעות הורדות אוטומטיות נוספות עד שמעדכנים את גרסת ה-CLI של Firebase.

בחירת פרויקט ב-Firebase

בתהליך ההגדרה, ה-CLI של 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 בסביבת הייצור.
  • אם אתם משתמשים במהדר כדי לפתח באמצעות השילוב של Data Connect עם pgvector ו-Vertex API, הקריאות ל-Cloud Vertex API מתבצעות ישירות ולא דרך השילוב של Vertex ב-Cloud SQL. עם זאת, הקריאות ל-API בסביבת הייצור עדיין מתבצעות, כלומר עליכם להשתמש בפרויקט Firebase אמיתי, אי אפשר להשתמש בפרויקט demo- ותצברו עלויות של Vertex API.