CI/CD için Data Connect emülatörünü kullanma

Firebase Data Connect, uçtan uca prototipleme ve sürekli entegrasyon ile sürekli dağıtım (CI/CD) akışları için yerel bir emülatör sağlar:

  • Data Connect emülatörü, sorgu ve mutasyon prototipleri oluşturmanıza ve istemci kodunu tamamen yerel bir ortamda test etmenize olanak tanımak için yerel entegre bir PGLite veritabanı örneğiyle etkileşim kurar.
  • Data Connect emülatörü, etkileşimli olmayan çalışmalar için de kullanılabilir. Otomatik testler çalıştırmanıza olanak tanır ve CI/CD iş akışlarıyla kullanıma uygundur. Bu, şemalarınız kararlı olduğunda ve istemci tarafı kodunu prototip haline getirmek ve test etmek istediğinizde kullanışlıdır.

Bu kılavuzda, emülatör kurulumu ve kullanımı hızlı başlangıç kılavuzundan daha ayrıntılı bir şekilde ele alınmaktadır.

Data Connect emülatörünü yükleme

Data Connect emülatörünü kullanmak için Local Emulator Suite'ü yüklemeden önce şunları yapmanız gerekir:

  • Node.js 18.0 veya sonraki bir sürüm.

Firebase CLI'yi yükleme ve proje dizinini ayarlama

  1. Yükleme kılavuzunu izleyerek Firebase CLI'yi yükleyin. Data Connect emülatörü, hata düzeltmeleri ve yeni özelliklerle aktif olarak geliştirildiği için düzenli olarak güncelleme yapmayı unutmayın.

  2. Henüz yapmadıysanız mevcut çalışma dizinini bir Firebase projesi olarak başlatın. Bunun için, hangi ürünlerin kullanılacağını belirtmek üzere istemleri uygulayın:

    firebase init

Local Emulator Suite yapılandırmasını ayarlama veya değiştirme

Data Connect emülatörünü Firebase VS Code uzantısından başlattıysanız gerekirse emülatör sizin için yüklenir.

Local Emulator Suite CLI'yi kullanarak emülatör ile birlikte Local Emulator Suite'un seçili diğer bileşenlerini manuel olarak yükleyebilirsiniz.Firebase Bu komut, ilgilendiğiniz emülatörleri seçmenize, ilgili emülatör ikili dosyalarını indirmenize ve varsayılanlar uygun değilse emülatör bağlantı noktalarını ayarlamanıza olanak tanıyan bir yapılandırma sihirbazı başlatır.

  firebase init emulators

Bir emülatör yüklendikten sonra Firebase CLI sürümünüzü güncelleyene kadar güncelleme kontrolü yapılmaz ve başka otomatik indirme işlemi gerçekleşmez.

Firebase projesi seçme

Kurulum akışında Firebase CLI, bir Firebase projesi seçmenizi veya oluşturmanızı ister. Firebase konsolunda Data Connect ile oluşturduğunuz mevcut bir projeyi seçerseniz orada seçtiğiniz yapılandırma önerilir.

Emülatörü ayarlama

Emülatörü yapılandırma

firebase init akışını çalıştırarak emülatör kurulum seçenekleri konusunda yol gösterebilirsiniz. Local Emulator Suite'teki diğer emülatörlerde olduğu gibi yapılandırma parametreleri yerel proje dosyalarında depolanır.

  • firebase.json dosyanız emülatör bağlantı noktası atamaları içeriyor.
    • emulators:ui anahtarı, Data Connect emülatörü için geçerli değildir.

Yerel ve üretim Data Connect kaynaklarıyla çalışma

Üretim kaynaklarını etkilemediğinden emin olmak istiyorsanız bir demo-projectID ayarlayın veya daha sonraki bir bölümde açıklandığı gibi, istemci kodunuzun emülatöre bağlanacak şekilde donatıldığından emin olun.

Emülatörü başlatma

Emülatör, CI/CD iş akışları için örneğin etkileşimli olmayan bir şekilde çalıştırılıyorsa exec seçeneğiyle başlatın.

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

Önceden tanımlanmış sorguları ve mutasyonları istemci koduna entegre ediyorsanız ve emülatör'ü özellikle istemcileri test etmek için kullanıyorsanız etkileşimli çalışma için start seçeneğini kullanabilirsiniz. Emülatörü VS Code uzantısından da başlatabilirsiniz.

firebase emulators:start

Müşteri kodunuzu, emülatörle konuşacak şekilde donanımlayın

Uygulama içi yapılandırmanızı veya test sınıflarınızı, Data Connect emülatörüyle etkileşime geçecek şekilde aşağıdaki gibi ayarlayın.

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
  

Test ve sürekli entegrasyon için emülatörü kullanma

Container mimarisine alınmış Local Emulator Suite görüntüleri çalıştırma

Local Emulator Suite'ü kapsayıcılarla birlikte tipik bir CI kurulumunda yüklemek ve yapılandırmak kolaydır.

Dikkat edilmesi gereken birkaç nokta vardır:

  • Emülatör ikili dosyaları ~/.cache/firebase/emulators/ adresine yüklenir ve önbelleğe alınır. Tekrarlanan indirmeleri önlemek için bu yolu CI önbelleği yapılandırmanıza ekleyebilirsiniz.
  • Deponuzdan firebase.json dosyası yoksa hangi emülatörlerin başlatılacağını belirtmek için emulators:start veya emulators:exec komutuna bir komut satırı bağımsız değişkeni eklemeniz gerekir. Örneğin, --only dataconnect.

Testler arasında veritabanınızı temizleme

Firebase, test ortamlarınızı çalıştırmalar arasında sıfırlamak için şunları önerir:

  • Aşağıdakileri işlemek için özel mutasyonlar yazma:
    • Kurulumda, yerel bir veritabanı örneğini başlangıç verileriyle doldurun.
    • Sökme işleminde, test sonrası veritabanı örneğinden değiştirilmiş verileri silin.

Data Connect emülatörünün üretimden farkı

Data Connect emülatörü, sunucu tarafı ürünün birçok özelliğini simüle eder. Ancak dikkate alınması gereken bazı istisnalar vardır:

  • PGLite'ın sürümü ve ayrıntılı yapılandırması, üretim Cloud SQL örneğinizin sürümünden farklı olabilir.
  • Data Connect'ın pgvector ve Vertex API entegrasyonu ile geliştirme yapmak için emülatör kullanıyorsanız Cloud Vertex API'ye yapılan çağrılar Cloud SQL'ın Vertex entegrasyonu üzerinden değil, doğrudan yapılır. Ancak üretim API'sine çağrılar yapılmaya devam eder. Bu nedenle, gerçek bir Firebase projesi kullanmanız gerekir, demo- projesi kullanamazsınız ve Vertex API maliyetleri alınır.