Menggunakan emulator Data Connect untuk CI/CD

Firebase Data Connect menyediakan emulator lokal untuk pembuatan prototipe end-to-end serta alur continuous integration dan continuous deployment (CI/CD):

  • Emulator Data Connect berinteraksi dengan instance database PGLite terintegrasi lokal agar Anda dapat membuat prototipe kueri dan mutasi serta menguji kode klien di lingkungan yang sepenuhnya lokal.
  • Emulator Data Connect juga dapat digunakan untuk pekerjaan non-interaktif. Dengan alat ini, Anda dapat menjalankan pengujian otomatis dan cocok untuk digunakan dengan alur kerja CI/CD. Hal ini berguna saat skema Anda stabil dan Anda ingin membuat prototipe dan menguji kode sisi klien.

Panduan ini membahas penginstalan dan penggunaan emulator secara lebih mendetail daripada panduan memulai cepat.

Menginstal emulator Data Connect

Sebelum menginstal Local Emulator Suite untuk menggunakan emulator Data Connect, Anda memerlukan:

  • Node.js versi 18.0 atau yang lebih baru.

Menginstal Firebase CLI dan menyiapkan direktori project

  1. Instal Firebase CLI, dengan mengikuti panduan penginstalan. Pastikan untuk memperbarui secara rutin, karena emulator Data Connect sedang dalam pengembangan aktif dengan perbaikan bug dan fitur baru.

  2. Jika Anda belum melakukannya, lakukan inisialisasi direktori kerja saat ini sebagai project Firebase, dengan mengikuti petunjuk untuk menentukan produk yang akan digunakan:

    firebase init
    

Menetapkan atau mengubah konfigurasi Local Emulator Suite

Jika Anda memulai emulator Data Connect dari ekstensi Firebase VS Code, emulator akan diinstal untuk Anda, jika diperlukan.

Anda dapat menggunakan Firebase CLI untuk menginstal emulator secara manual beserta komponen Local Emulator Suite lainnya yang dipilih. Perintah ini akan memulai wizard konfigurasi sehingga Anda dapat memilih emulator yang diminati, mendownload file biner emulator yang sesuai, dan menetapkan port emulator jika port default tidak sesuai.

  firebase init emulators

Setelah emulator diinstal, tidak akan ada pemeriksaan update dan download otomatis tambahan yang dilakukan sebelum Anda mengupdate versi Firebase CLI.

Memilih project Firebase

Dalam alur penyiapan, Firebase CLI akan meminta Anda memilih atau membuat project Firebase. Jika Anda memilih project yang sudah ada dan telah disiapkan dengan Data Connect di konsol Firebase, konfigurasi yang Anda pilih di sana akan disarankan.

Menyiapkan emulator

Mengonfigurasi emulator

Menjalankan alur firebase init akan memandu Anda melalui opsi penyiapan emulator. Seperti emulator lainnya di Local Emulator Suite, parameter konfigurasi disimpan dalam file project lokal.

  • File firebase.json Anda berisi penetapan port emulator.
    • Kunci emulators:ui tidak berlaku untuk emulator Data Connect.

Menggunakan resource Data Connect lokal dan produksi

Jika Anda ingin memastikan tidak memengaruhi resource produksi, tetapkan projectID demo- atau pastikan kode klien Anda diinstrumentasikan untuk terhubung ke emulator, seperti yang dibahas di bagian selanjutnya.

Memulai emulator

Jika Anda menjalankan emulator secara non-interaktif, misalnya untuk alur kerja CI/CD, mulailah dengan opsi exec.

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

Jika Anda mengintegrasikan kueri dan mutasi standar dalam kode klien dan menggunakan emulator khusus untuk menguji klien, Anda dapat menggunakan opsi start untuk pekerjaan interaktif. Anda juga dapat memulai emulator dari ekstensi VS Code.

firebase emulators:start

Melengkapi kode klien untuk berkomunikasi dengan emulator

Siapkan konfigurasi dalam aplikasi atau class pengujian untuk berinteraksi dengan emulator Data Connect seperti berikut.

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
  

Menggunakan emulator untuk pengujian dan continuous integration

Menjalankan image Local Emulator Suite dalam container

Penginstalan dan konfigurasi Local Emulator Suite dengan penampung dalam penyiapan CI biasa sangat mudah dilakukan.

Ada beberapa hal yang perlu diperhatikan:

  • Biner emulator diinstal dan di-cache di ~/.cache/firebase/emulators/. Anda dapat menambahkan jalur ini ke konfigurasi cache CI Anda untuk menghindari download berulang.
  • Jika tidak memiliki file firebase.json di repositori, Anda harus menambahkan argumen command line ke perintah emulators:start atau emulators:exec untuk menentukan emulator yang harus dimulai. Contoh, --only dataconnect.

Mengosongkan database di antara pengujian

Untuk mereset lingkungan pengujian di antara pengujian, Firebase merekomendasikan:

  • Menulis mutasi khusus untuk menangani hal berikut:
    • Dalam penyiapan, isi instance database lokal dengan data awal.
    • Dalam penghapusan, hapus data yang diubah dari instance database pasca-pengujian.

Perbedaan emulator Data Connect dengan produksi

Emulator Data Connect menyimulasikan banyak fitur produk sisi server. Namun, ada beberapa pengecualian yang perlu diperhatikan:

  • Versi dan konfigurasi mendetail PGLite mungkin berbeda dengan versi instance Cloud SQL produksi Anda.
  • Jika Anda menggunakan emulator untuk mengembangkan dengan integrasi pgvector dan Vertex API Data Connect, panggilan ke Cloud Vertex API dilakukan secara langsung, bukan melalui integrasi Vertex Cloud SQL. Namun, panggilan ke API produksi masih dilakukan, yang berarti Anda harus menggunakan project Firebase yang sebenarnya, tidak dapat menggunakan project demo-, dan biaya Vertex API akan dikenakan.