使用適用於 CI/CD 的 Data Connect 模擬器

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 設定

如果您是透過 Firebase VS Code 擴充功能啟動 Data Connect 模擬器,系統會視需要為您安裝模擬器。

您可以使用 Firebase CLI 手動安裝模擬器,以及 Local Emulator Suite 的其他選定元件。這個指令會啟動設定精靈,讓您選取感興趣的模擬器、下載對應的模擬器二進位檔案,以及在預設值不適用的情況下設定模擬器連接埠。

  firebase init emulators

安裝模擬器後,系統不會檢查更新,也不會自動下載其他項目,直到您更新 Firebase CLI 版本為止。

選擇 Firebase 專案

在設定流程中,Firebase CLI 會提示您選擇或建立 Firebase 專案。如果您選擇使用已在 Firebase 控制台中設定的現有專案,系統會建議您使用當時選擇的設定。Data Connect

設定模擬器

設定模擬器

執行 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映像檔

在一般 CI 設定中,使用容器安裝及設定 Local Emulator Suite 相當簡單。

請注意以下幾點:

  • 模擬器二進位檔會安裝並快取至 ~/.cache/firebase/emulators/。建議您將這個路徑新增至 CI 快取設定,以免重複下載。
  • 如果存放區中沒有 firebase.json 檔案,您必須在 emulators:startemulators:exec 指令中加入指令列引數,指定要啟動的模擬器。例如:--only dataconnect

在測試之間清除資料庫

如要在執行測試之間重設測試環境,Firebase 建議:

  • 編寫專用變異,以處理下列事項:
    • 在設定期間,使用起始資料填入本機資料庫執行個體。
    • 在拆除作業中,從測試後資料庫執行個體刪除修改過的資料。

Data Connect模擬器與正式版有何不同

Data Connect 模擬器會模擬伺服器端產品的許多功能。不過,請注意以下例外狀況:

  • PGLite 的版本和詳細設定可能與正式版 Cloud SQL 執行個體的版本不同。
  • 如果您使用模擬器搭配 Data Connect的 pgvector 和 Vertex API 整合功能進行開發,系統會直接呼叫 Cloud Vertex API,而不是透過 Cloud SQL 的 Vertex 整合功能。不過,系統仍會呼叫正式版 API,因此您必須使用實際的 Firebase 專案,不能使用 demo- 專案,且會產生 Vertex API 的費用。