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 mẫu từ đầu đến cuối 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 mẫu 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 bài kiểm thử tự động và phù hợp để sử dụng với quy trình CI/CD. Điều này hữu ích khi các giản đồ của bạn ổn định và bạn muốn tạo mẫu và 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 sẽ cần:

  • 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 làm, hãy khởi động thư mục đang hoạt động hiện tại dưới dạng một dự án Firebase, làm theo lời nhắc để chỉ định những 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 sẽ được cài đặt cho bạn (nếu cần).

Bạn có thể 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ác cổng trình mô phỏng nếu các cổng mặc định không phù hợp.

  firebase init emulators

Sau khi bạn cài đặt một trình mô phỏng, hệ thống sẽ không kiểm tra bản cập nhật và không tải thêm nội dung nào xuống tự động 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 quy trình firebase init sẽ hướng dẫn bạn các lựa 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.

Thao tác với các 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 chắc chắn không ảnh hưởng đến các tài nguyên sản xuất, hãy đặt một projectID demo- hoặc đảm bảo mã ứng dụng được đo lường để kết nối với trình mô phỏng, như đã thảo luận trong một phần sau.

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

Nếu bạn đang chạy trình mô phỏng theo cách không tương tác (ví dụ: cho quy trình CI/CD), hãy khởi động trình mô phỏng bằng lựa 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 lựa 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

Trang bị công cụ cho mã ứng dụng để tương tác 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 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 nằm trong vùng chứa

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 điển hình rất đơn giản.

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

  • Các 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 một đố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ượt kiểm thử

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

  • Viết các đột biến chuyên biệt để xử lý những trường hợp 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ỷ, hãy xoá dữ liệu đã sửa đổi khỏi phiên bản cơ sở dữ liệu sau kiểm thử.

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

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 trong môi trường sản xuất.
  • Nếu bạn đang dùng trình mô phỏng để phát triển bằng tính năng tích hợp pgvector và Vertex API của Data Connect, thì các lệnh gọi đến Cloud Vertex API 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, tức là bạn phải sử dụng một dự án Firebase thực, không thể sử dụng dự án demo- và sẽ phải trả phí cho Vertex API.