Firebase Local Emulator Suite, tek seferlik prototip oturumlarından üretim ölçeğindeki sürekli entegrasyon iş akışlarına kadar farklı prototip ve test ortamları için yüklenebilir ve yapılandırılabilir.
Local Emulator Suite'i yükleyin
Emulator Suite'i yüklemeden önce şunlara ihtiyacınız vardır:
Emulator Suite'i yüklemek için:
- Firebase CLI'ı yükleyin.
Firebase CLI'ı henüz yüklemediyseniz hemen yükleyin.
Emulator Suite'i kullanmak için CLI'ın 8.14.0 veya üzeri bir sürümüne sahip olmanız gerekir. Aşağıdaki komutu kullanarak hangi sürümü yüklediğinizi kontrol edebilirsiniz:
firebase --version
- Henüz yapmadıysanız mevcut çalışma dizinini bir Firebase projesi olarak başlatın. Ardından, hangi ürünlerin kullanılacağını belirtmek için ekrandaki talimatları uygulayın:
firebase init
- Emulator Suite'i kurun. Bu komut; istediğ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, güncelleme kontrolü yapılmaz ve Firebase CLI sürümünüzü güncelleyene kadar ek otomatik indirmeler yapılmaz.
Emulator Suite'i yapılandırın
İsteğe bağlı olarak firebase.json
dosyasında emülatörlerin ağ bağlantı noktalarını ve Güvenlik Kuralları tanımlarının yolunu yapılandırabilirsiniz:
firebase init emulators
komutunu çalıştırarak veyafirebase.json
öğesini manuel olarak düzenleyerek emülatör bağlantı noktalarını değiştirin.firebase.json
öğesini manuel olarak düzenleyerek Güvenlik Kuralları tanımlarının yolunu değiştirin.
Bu ayarları yapılandırmazsanız emülatörler varsayılan bağlantı noktalarını dinler. Cloud Firestore, Realtime Database ve Cloud Storage for Firebase emülatörleri ise açık veri güvenliğiyle çalışır.
Komut | Açıklama |
---|---|
init emülatörleri | Bir emülatör başlatma sihirbazı başlatın. Yüklenecek emülatörleri belirleyin ve isteğe bağlı olarak emülatör bağlantı noktası ayarlarını belirtin. init emulators zarar vermez; varsayılanların kabul edilmesi, geçerli emülatör yapılandırmasının korunmasını sağlar. |
Bağlantı noktası yapılandırması
Her emülatör, tercih edilen varsayılan değerle makinenizdeki farklı bir bağlantı noktasına bağlanır.
Emülatör | Varsayılan Bağlantı Noktası |
---|---|
Doğrulama | 9099 |
Emulator Suite kullanıcı arayüzü | 4.000 |
Cloud Functions | 5001 |
Eventarc | 9299 |
Realtime Database | 9000 |
Cloud Firestore | 8080 |
Cloud Storage for Firebase | 9199 |
Firebase Hosting | 5.000 |
Pub/Sub | 8085 |
Proje kimliği yapılandırması
Emülatörleri çağırma şeklinize bağlı olarak, farklı Firebase proje kimlikleri veya belirli bir proje kimliği için birden fazla emülatör örneği kullanarak bir emülatörün birden fazla örneğini çalıştırabilirsiniz. Bu tür durumlarda emülatör örnekleri ayrı bir ortamda çalışır.
Tüm emülatör çağrıları için tek bir proje kimliği ayarlamak genellikle iyi bir uygulamadır. Böylece Emulator Suite kullanıcı arayüzü, farklı ürün emülatörleri ve belirli bir emülatörün tüm örnekleri her durumda doğru şekilde iletişim kurabilir.
Yerel Emulator Suite, ortamda birden fazla proje kimliği algıladığında uyarı verir. Bununla birlikte, firebase.json
öğenizde singleProjectMode
anahtarını false
olarak ayarlayarak bu davranışı geçersiz kılabilirsiniz.
Proje kimliği beyanlarında uyuşmazlık olup olmadığını kontrol edebilirsiniz:
- Komut satırındaki varsayılan proje. Proje kimliği varsayılan olarak başlangıçta
firebase init
veyafirebase use
ile seçilen projeden alınır. Proje listesini görüntülemek (ve hangisinin seçildiğini görmek) içinfirebase projects:list
kısayolunu kullanın. - Kural birimi testleri. Proje kimliği genellikle Kural Birimi Test kitaplığının
initializeTestEnvironment
veyainitializeTestApp
yöntemlerine yapılan çağrılarda belirtilir. - Komut satırı
--project
işareti. Firebase CLI--project
işareti iletildiğinde varsayılan proje geçersiz kılınır. Bayrağın değerinin, birim testlerindeki ve uygulama başlatmadaki proje kimliğiyle eşleştiğinden emin olmanız gerekir.
Apple platformları, Android ve web projelerinizi yapılandırırken ayarladığınız platforma özel proje kimliği yapılandırmalarını da kontrol edin.
Güvenlik Kuralları yapılandırması
Emülatörler, firebase.json
içindeki database
, firestore
ve storage
yapılandırma anahtarlarından Güvenlik Kuralları yapılandırmasını alır.
{
// Existing firebase configuration ...
"database": {
"rules": "database.rules.json"
},
"firestore": {
"rules": "firestore.rules"
},
"storage": {
"rules": "storage.rules"
}
// ...
// Optional emulator configuration. Default
// values are used if absent.
"emulators": {
"singleProjectMode": false, // do not warn on detection of multiple project IDs
"firestore": {
"port": "8080"
},
"ui": {
"enabled": true, // Default is `true`
"port": 4000 // If unspecified, see CLI log for selected port
},
"auth": {
"port": "9099"
},
"pubsub": {
"port": "8085"
}
}
}
Java seçeneklerini belirtme
Realtime Database emülatörü, Cloud Firestore emülatörü ve Cloud Storage for Firebase emülatörünün bir parçası, Java tabanlıdır. Bu emülatör, JAVA_TOOL_OPTIONS
ortam değişkeni aracılığıyla JVM işaretleriyle özelleştirilebilir.
Örneğin, Java yığın alanıyla ilgili hatalarla karşılaşırsanız maksimum Java yığın boyutunu 4 GB'a artırabilirsiniz:
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
Birden fazla işaret, tırnak işaretleri içinde boşlukla ayrılmış şekilde belirtilebilir (ör. JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g"
). İşaretler yalnızca emülatörlerin Java tabanlı bileşenlerini etkiler. Emulator Suite kullanıcı arayüzü gibi Firebase CLI'ın diğer bölümleri üzerinde herhangi bir etkisi yoktur.
Başlatma emülatörleri
Emülatörleri, manuel olarak sonlandırılana kadar çalışacak şekilde başlatabilir veya belirlenen bir test komut dosyası süresince çalıştırıp otomatik olarak kapatabilirsiniz.
Komut | Açıklama | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
emülators:start | firebase.json bölgesinde yapılandırılan Firebase ürünleri için emülatörleri başlatın.
Emülatör işlemleri açıkça durdurulana kadar çalışmaya devam eder. emulators:start çağrısı yapıldığında emülatörler, yüklü değilse ~/.cache/firebase/emulators/ konumuna indirilir.
|
||||||||||||
emulators:exec scriptpath | firebase.json içinde yapılandırılan Firebase ürünleri için emülatörleri başlattıktan sonra scriptpath konumunda komut dosyasını çalıştırın. Komut dosyasının çalışması tamamlandığında emülatör işlemleri otomatik olarak durur.
|
Sürekli entegrasyon iş akışları için firebase emulators:exec
yöntemi genellikle daha uygundur.
Emülatör verilerini dışa ve içe aktarma
Authentication, Cloud Firestore, Realtime Database ve Cloud Storage for Firebase emülatörlerinden alınan verileri dışa aktarabilirsiniz. Böylece, paylaşılabilir ve ortak bir temel veri kümesi olarak kullanabilirsiniz. Bu veri kümeleri, yukarıda açıklandığı gibi --import
işareti kullanılarak içe aktarılabilir.
emülatörler:dışa aktarma export_directory |
Kimlik doğrulama, Cloud Firestore, Realtime Database veya Cloud Storage for Firebase emülatörü.
Çalışan bir Cloud Firestore, Realtime Database veya Cloud Storage for Firebase emülatörü örneğinden verileri dışa aktarın. Belirtilen
Yukarıda açıklanan |
CI sisteminizle entegrasyon
Container mimarisine alınmış Emulator Suite görüntülerini çalıştırma
Tipik bir CI kurulumunda container'larla Emulator Suite'in yüklenmesi ve yapılandırılması oldukça kolaydır.
Dikkat edilmesi gereken birkaç sorun vardır:
JAR dosyaları
~/.cache/firebase/emulators/
itibarıyla yüklenir ve önbelleğe alınır.- Yinelenen indirmeleri önlemek için bu yolu CI önbellek yapılandırmanıza eklemek isteyebilirsiniz.
Deponuzda
firebase.json
dosyası yoksa hangi emülatörlerin başlatılması gerektiğini belirtmek içinemulators:start
veyaemulators:exec
komutuna bir komut satırı bağımsız değişkeni eklemeniz gerekir. Örneğin,--only functions,firestore
.
Yetkilendirme jetonu oluşturma (yalnızca barındırma emülatörü)
Sürekli entegrasyon iş akışlarınız Firebase Hosting'e dayanıyorsa firebase emulators:exec
çalıştırmak için jeton kullanarak giriş yapmanız gerekir. Diğer emülatörler için giriş yapılması gerekmez.
Jeton oluşturmak için firebase login:ci
komutunu yerel ortamınızda çalıştırın. Bu işlem, bir CI sisteminden yapılmamalıdır. Kimlik doğrulama talimatlarını uygulayın. Jeton derlemeler genelinde geçerli olacağından bu adımı proje başına yalnızca bir kez gerçekleştirmeniz gerekir. Jeton, şifre gibi değerlendirilmelidir. Şifrenin gizli tutulduğundan emin olun.
CI ortamınız derleme komut dosyalarında kullanılabilecek ortam değişkenlerini belirtmenize olanak tanıyorsa FIREBASE_TOKEN
adında bir ortam değişkeni oluşturmanız yeterlidir. Bu değişkenin değeri erişim jetonu dizesi olur. Firebase CLI, FIREBASE_TOKEN
ortam değişkenini otomatik olarak alır ve emülatörler doğru şekilde başlar.
Son çare olarak jetonu derleme komut dosyanıza eklemeniz yeterlidir, ancak güvenilmeyen tarafların erişimi olmadığından emin olun. Bu sabit kodlu yaklaşım için firebase emulators:exec
komutuna --token "YOUR_TOKEN_STRING_HERE"
ekleyebilirsiniz.
Emulator Hub REST API'yi kullanma
Çalışan emülatörleri listeleme
Şu anda çalışan emülatörleri listelemek için Emulator Hub'ın /emulators
uç noktasına GET
isteği gönderin.
curl localhost:4400/emulators
Sonuç, tüm çalışan emülatörleri ve bunların ana makine/bağlantı noktası yapılandırmalarını listeleyen bir JSON nesnesi olacaktır. Örneğin:
{
"hub":{
"name": "hub",
"host": "localhost",
"port": 4400
},
"functions": {
"name": "functions",
"host": "localhost",
"port": 5001
}
"firestore": {
"name": "firestore",
"host": "localhost",
"port": 8080
}
}
Arka Plan İşlevi Tetikleyicilerini Etkinleştirin / Devre Dışı Bırakın
Bazı durumlarda, yerel işlev ve uzantı tetikleyicilerini geçici olarak devre dışı bırakmanız gerekir. Örneğin, Cloud Functions veya Extensions emülatörlerinde çalışan onDelete
işlevlerini tetiklemeden Cloud Firestore emülatörindeki tüm verileri silmek isteyebilirsiniz.
Yerel işlev tetikleyicilerini geçici olarak devre dışı bırakmak için Emulator Hub'ın /functions/disableBackgroundTriggers
uç noktasına bir PUT
isteği gönderin.
curl -X PUT localhost:4400/functions/disableBackgroundTriggers
Sonuç, mevcut durumu ayrıntılı olarak gösteren bir JSON nesnesi olur.
{
"enabled": false
}
Devre dışı bırakılan yerel işlev tetikleyicilerini etkinleştirmek için Emulator Hub'ın /functions/enableBackgroundTriggers
uç noktasına bir PUT
isteği gönderin.
curl -X PUT localhost:4400/functions/enableBackgroundTriggers
Sonuç, mevcut durumu ayrıntılı olarak gösteren bir JSON nesnesi olur.
{
"enabled": true
}
Emulator SDK entegrasyonları
Bu bölümdeki tablolar, istemci ve yönetici SDK'ları tarafından hangi emülatörlerin desteklendiğini gösterir. Gelecek, emülatör desteğinin planlandığı ancak henüz kullanılamadığı anlamına gelir.
İstemci SDK'sının kullanılabilirliği
Android | Apple platformları | Web |
Firebase kullanıcı arayüzü Android |
Firebase kullanıcı arayüzü iOS |
Firebase kullanıcı arayüzü Web |
|
---|---|---|---|---|---|---|
Realtime Database | 19.4.0 | 7.2.0 | 8.0.0 | 6.4.0 | Gelecek | Yok |
Cloud Firestore | 21.6.0 | 7.2.0 | 8.0.0 | 6.4.0 | Gelecek | Yok |
Doğrulama | 20.0.0 | 7.0.0 | 8.0.0 | 7.0.0 | Gelecek | 4.7.2 |
Cloud Storage for Firebase | 20.0.0 | 8.0.0 | 8.4.0 | 7.0.0 | 11.0.0 | Yok |
Cloud Functions | 19.1.0 | 7.2.0 | 8.0.0 | Yok | Yok | Yok |
Hosting | Yok | Yok | Yok | Yok | Yok | Yok |
Uzantılar | Yok | Yok | Yok | Yok | Yok | Yok |
Yönetici SDK'sinin kullanılabilirliği
Düğüm | Java | Python | Go | |
---|---|---|---|---|
Realtime Database | 8.6.0 | 6.10.0 | 2.18.0 | Gelecek |
Cloud Firestore | 8.0.0 | 6.10.0 | 3.0.0 | 1.0.0 |
Doğrulama | 9.3.0 | 7.2.0 | 5.0.0 | 4.2.0 |
Cloud Storage for Firebase | 9.8,0 | Gelecek | Gelecek | Gelecek |
Cloud Functions | Yok | Yok | Yok | Yok |
Hosting | Yok | Yok | Yok | Yok |
Uzantılar | Yok | Yok | Yok | Yok |