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

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

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

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

    firebase init

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

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

אפשר להשתמש ב-CLI של 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 בסביבת הייצור

כדי לוודא שלא תהיה השפעה על משאבי הייצור, צריך להגדיר projectID או לוודא שקוד הלקוח מוגדר להתחבר לאמולטור, כמו שמוסבר בקטע בהמשך.demo-

הפעלת האמולטור

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