שימוש באמולטור 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.