Sử dụng trình mô phỏng Kết nối dữ liệu cho CI/CD

Firebase Data Connect cung cấp cho bạn một trình mô phỏng cục bộ để tạo nguyên mẫu toàn diện cũng như các quy trình tích hợp liên tục và triển khai liên tục (CI/CD):

  • Trình mô phỏng Data Connect tương tác với một thực thể cơ sở dữ liệu PGLite tích hợp cục bộ để cho phép bạn tạo bản minh hoạ các truy vấn và đột biến cũng như kiểm thử mã ứng dụng trong một môi trường hoàn toàn cục bộ.
  • Bạn cũng có thể dùng trình mô phỏng Data Connect cho công việc không tương tác. Công cụ này cho phép bạn chạy các chương trình kiểm thử tự động và phù hợp để sử dụng với quy trình công việc CI/CD. Điều này rất hữu ích khi giản đồ của bạn ổn định và bạn muốn tạo nguyên mẫu cũng như kiểm thử mã phía máy khách.

Hướng dẫn này trình bày chi tiết hơn về cách cài đặt và sử dụng trình mô phỏng so với hướng dẫn bắt đầu nhanh.

Cài đặt trình mô phỏng Data Connect

Trước khi cài đặt Local Emulator Suite để sử dụng trình mô phỏng Data Connect, bạn cần có:

  • Node.js phiên bản 18.0 trở lên.

Cài đặt CLI Firebase và thiết lập thư mục dự án

  1. Cài đặt CLI Firebase, làm theo hướng dẫn cài đặt. Hãy nhớ cập nhật thường xuyên vì trình mô phỏng Data Connect đang trong quá trình phát triển tích cực với các bản sửa lỗi và tính năng mới.

  2. Nếu bạn chưa thực hiện, hãy khởi chạy thư mục đang hoạt động dưới dạng dự án Firebase, làm theo lời nhắc để chỉ định sản phẩm cần sử dụng:

    firebase init
    

Đặt hoặc sửa đổi cấu hình Local Emulator Suite

Nếu bạn đã khởi động trình mô phỏng Data Connect từ tiện ích Firebase VS Code, thì trình mô phỏng đã được cài đặt cho bạn (nếu cần).

Bạn có thể sử dụng CLI Firebase để cài đặt trình mô phỏng theo cách thủ công cùng với các thành phần khác đã chọn của Local Emulator Suite. Lệnh này sẽ khởi động một trình hướng dẫn cấu hình cho phép bạn chọn trình mô phỏng mà bạn quan tâm, tải các tệp nhị phân trình mô phỏng tương ứng xuống và đặt cổng trình mô phỏng nếu cổng mặc định không phù hợp.

  firebase init emulators

Sau khi cài đặt trình mô phỏng, hệ thống sẽ không kiểm tra bản cập nhật và không có quá trình tải xuống tự động nào khác diễn ra cho đến khi bạn cập nhật phiên bản CLI Firebase.

Chọn một dự án Firebase

Trong quy trình thiết lập, CLI Firebase sẽ nhắc bạn chọn hoặc tạo một dự án Firebase. Nếu bạn chọn một dự án hiện có mà bạn đã thiết lập bằng Data Connect trong bảng điều khiển Firebase, thì cấu hình bạn đã chọn ở đó sẽ được đề xuất.

Thiết lập trình mô phỏng

Định cấu hình trình mô phỏng

Việc chạy luồng firebase init sẽ hướng dẫn bạn các tuỳ chọn thiết lập trình mô phỏng. Giống như các trình mô phỏng khác trong Local Emulator Suite, các tham số cấu hình được lưu trữ trong các tệp dự án cục bộ.

  • Tệp firebase.json của bạn chứa các chỉ định cổng trình mô phỏng.
    • Khoá emulators:ui không áp dụng cho trình mô phỏng Data Connect.

Làm việc với tài nguyên Data Connect cục bộ và tài nguyên phát hành công khai

Nếu bạn muốn đảm bảo không ảnh hưởng đến tài nguyên phát hành chính thức, hãy đặt projectID demo- hoặc đảm bảo mã ứng dụng của bạn được đo lường để kết nối với trình mô phỏng, như đã thảo luận trong phần sau.

Khởi động trình mô phỏng

Nếu bạn đang chạy trình mô phỏng không tương tác, chẳng hạn như cho quy trình làm việc CI/CD, hãy khởi động trình mô phỏng bằng tuỳ chọn exec.

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

Nếu đang tích hợp các truy vấn và đột biến được xác định trước trong mã ứng dụng và đang sử dụng trình mô phỏng dành riêng cho việc kiểm thử ứng dụng, thì bạn có thể sử dụng tuỳ chọn start cho công việc tương tác. Bạn cũng có thể khởi động trình mô phỏng từ tiện ích VS Code.

firebase emulators:start

Đo lường mã ứng dụng để giao tiếp với trình mô phỏng

Thiết lập cấu hình trong ứng dụng hoặc các lớp kiểm thử để tương tác với trình mô phỏng Data Connect như sau.

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 cho 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
  

Sử dụng trình mô phỏng để kiểm thử và tích hợp liên tục

Chạy hình ảnh Local Emulator Suite được đóng gói

Việc cài đặt và định cấu hình Local Emulator Suite bằng các vùng chứa trong một chế độ thiết lập CI thông thường rất đơn giản.

Có một vài vấn đề cần lưu ý:

  • Tệp nhị phân của trình mô phỏng được cài đặt và lưu vào bộ nhớ đệm tại ~/.cache/firebase/emulators/. Bạn nên thêm đường dẫn này vào cấu hình bộ nhớ đệm CI để tránh tải xuống nhiều lần.
  • Nếu không có tệp firebase.json trong kho lưu trữ, bạn phải thêm đối số dòng lệnh vào lệnh emulators:start hoặc emulators:exec để chỉ định trình mô phỏng nào sẽ được khởi động. Ví dụ: --only dataconnect.

Xoá cơ sở dữ liệu giữa các lần kiểm thử

Để đặt lại môi trường kiểm thử giữa các lần chạy, Firebase khuyên bạn nên:

  • Viết các đột biến chuyên dụng để xử lý những vấn đề sau:
    • Trong quá trình thiết lập, hãy điền dữ liệu bắt đầu vào một thực thể cơ sở dữ liệu cục bộ.
    • Trong quá trình huỷ bỏ, hãy xoá dữ liệu đã sửa đổi khỏi thực thể cơ sở dữ liệu sau khi kiểm thử.

Sự khác biệt giữa trình mô phỏng Data Connect và bản phát hành chính thức

Trình mô phỏng Data Connect mô phỏng nhiều tính năng của sản phẩm phía máy chủ. Tuy nhiên, bạn cần lưu ý một số trường hợp ngoại lệ:

  • Phiên bản và cấu hình chi tiết của PGLite có thể khác với phiên bản của phiên bản Cloud SQL chính thức.
  • Nếu bạn đang sử dụng trình mô phỏng để phát triển bằng tính năng tích hợp API Vertex và pgvector của Data Connect, thì các lệnh gọi đến API Vertex trên đám mây sẽ được thực hiện trực tiếp thay vì thông qua tính năng tích hợp Vertex của Cloud SQL. Tuy nhiên, các lệnh gọi đến API phát hành công khai vẫn được thực hiện, nghĩa là bạn phải sử dụng một dự án Firebase thực sự, không thể sử dụng dự án demo- và sẽ phải chịu chi phí của API Vertex.