Firebase Local Emulator Suite, tek seferlik prototip oluşturma oturumlarından üretim ölçeğinde sürekli entegrasyon iş akışlarına kadar farklı prototip ve test ortamları için kurulabilir ve yapılandırılabilir.
Yerel Emülatör Paketini Kurun
Emulator Suite'i kurmadan önce ihtiyacınız olacak:
Emulator Suite'i yüklemek için:
- Firebase CLI'yi yükleyin. Firebase CLI'yi henüz yüklemediyseniz, şimdi kurun . Emulator Suite'i kullanmak için CLI sürüm 8.14.0 veya üzeri gerekir. Aşağıdaki komutu kullanarak hangi sürümü yüklediğinizi kontrol edebilirsiniz:
firebase --version
- Henüz yapmadıysanız, hangi ürünlerin kullanılacağını belirlemek için ekrandaki komutları izleyerek geçerli çalışma dizinini bir Firebase projesi olarak başlatın:
firebase init
- Emulator Suite'i kurun. Bu komut, ilgilendiğiniz öykünücüleri seçmenize, ilgili öykünücü ikili dosyalarını indirmenize ve varsayılanlar uygun değilse öykünücü bağlantı noktalarını ayarlamanıza olanak tanıyan bir yapılandırma sihirbazını başlatır.
firebase init emulators
Bir öykünücü yüklendikten sonra, siz Firebase CLI sürümünüzü güncelleyene kadar hiçbir güncelleme denetimi yapılmaz ve ek otomatik indirme gerçekleşmez.
Emulator Suite'i Yapılandır
firebase.json
dosyasında emülatörlerin ağ bağlantı noktalarını ve Güvenlik Kuralları tanımlarının yolunu isteğe bağlı olarak yapılandırabilirsiniz:
-
firebase init emulators
çalıştırarak veyafirebase.json
manuel olarak düzenleyerek öykünücü bağlantı noktalarını değiştirin. -
firebase.json
manuel olarak düzenleyerek Güvenlik Kuralları tanımlarının yolunu değiştirin.
Bu ayarları yapılandırmazsanız öykünücüler varsayılan bağlantı noktalarını dinler ve Cloud Firestore, Realtime Database ve Cloud Storage öykünücüleri açık veri güvenliği ile çalışır.
Emretmek | Tanım |
---|---|
başlangıç emülatörleri | Bir öykünücü başlatma sihirbazı başlatın. Kurulacak öykünücüleri belirleyin ve isteğe bağlı olarak öykünücü bağlantı noktası ayarlarını belirtin. init emulators yıkıcı değildir; varsayılanları kabul etmek, mevcut öykünücü yapılandırmasını koruyacaktır. |
Bağlantı noktası yapılandırması
Her öykünücü, tercih edilen bir varsayılan değerle makinenizdeki farklı bir bağlantı noktasına bağlanır.
öykünücü | Varsayılan Bağlantı Noktası |
---|---|
kimlik doğrulama | 9099 |
Emülatör Paketi Kullanıcı Arayüzü | 4000 |
Bulut İşlevleri | 5001 |
Gerçek Zamanlı Veritabanı | 9000 |
Bulut Firestore | 8080 |
Bulut depolama | 9199 |
Firebase Barındırma | 5000 |
Pub/Sub | 8085 |
Güvenlik Kuralları yapılandırması
Öykünücüler, firestore
database
, firebase.json
deposu ve storage
yapılandırma anahtarlarından Güvenlik Kuralları yapılandırmasını alacaktı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": {
"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 öykünücüsü, Cloud Firestore öykünücüsü ve Cloud Storage öykünücüsünün bir kısmı, JAVA_TOOL_OPTIONS
ortam değişkeni aracılığıyla JVM bayraklarıyla özelleştirilebilen Java'yı temel alır.
Örneğin, Java yığın alanıyla ilgili hatalarla karşılaşırsanız, maksimum Java yığın boyutunu 4 GB'a yükseltebilirsiniz:
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g"
gibi, boşluklarla ayrılmış tırnak içinde birden çok bayrak belirtilebilir. İşaretler yalnızca öykünücülerin Java tabanlı bileşenlerini etkiler ve Firebase CLI'nin Emulator Suite UI gibi diğer bölümleri üzerinde hiçbir etkisi yoktur.
Emülatörleri başlat
Öykünücüleri manuel olarak sonlandırılana kadar çalıştırmaya veya belirlenmiş bir test komut dosyası süresince çalıştırmaya ve ardından otomatik olarak kapanmaya başlayabilirsiniz.
Emretmek | Tanım | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
öykünücüler:başlat | firebase.json'da yapılandırılan firebase.json ürünleri için emülatörleri başlatın. Öykünücü işlemleri, açıkça durdurulana kadar çalışmaya devam edecektir. Emulators emulators:start henüz kurulu değilse ~/.cache/firebase/emulators/ dizinine indirecektir.
| ||||||||||||
öykünücüler:exec scriptpath | firebase.json scriptpath için öykünücüleri başlattıktan sonra komut dosyasını komut dosyası yolunda çalıştırın. Emulator işlemleri, betiğin çalışması bittiğinde otomatik olarak duracaktır.
|
firebase emulators:exec
yöntemi genellikle sürekli entegrasyon iş akışları için daha uygundur.
Emülatör verilerini dışa ve içe aktarma
Paylaşılabilir, ortak bir temel veri seti olarak kullanmak için Kimlik Doğrulama, Cloud Firestore, Realtime Database ve Cloud Storage öykünücülerinden verileri dışa aktarabilirsiniz. Bu veri kümeleri, yukarıda açıklandığı gibi --import
bayrağı kullanılarak içe aktarılabilir.
öykünücüler:dışa aktarma dışa export_directory | Kimlik doğrulama, Cloud Firestore, Realtime Database veya Cloud Storage öykünücüsü . Çalışan bir Cloud Firestore, Realtime Database veya Cloud Storage öykünücü örneğinden verileri dışa aktarın. Belirtilen Öykünücülere, yukarıda açıklanan |
CI sisteminizle entegre edin
Kapsayıcılı Emulator Suite görüntülerini çalıştırma
Tipik bir CI kurulumunda kapsayıcılı Emulator Suite'in kurulumu ve konfigürasyonu basittir.
Dikkat edilmesi gereken birkaç sorun var:
JAR dosyaları
~/.cache/firebase/emulators/
kurulur ve önbelleğe alınır.- Tekrarlanan indirmeleri önlemek için bu yolu CI önbellek yapılandırmanıza eklemek isteyebilirsiniz.
Deponuzda bir
firebase.json
dosyanız yoksa, hangi öykünücülerin başlatılması gerektiğini belirtmek içinemulators:start
veyaemulators:exec
komutuna bir komut satırı argümanı eklemelisiniz. Örneğin,
--only functions,firestore
.
Kimlik doğrulama belirteci oluşturun (yalnızca Barındırma öykünücüsü)
Sürekli entegrasyon iş akışlarınız Firebase Hosting'e dayanıyorsa, firebase emulators:exec
çalıştırmak için bir belirteç kullanarak oturum açmanız gerekir. Diğer öykünücüler oturum açmayı gerektirmez.
Bir belirteç oluşturmak için yerel ortamınızda firebase login:ci
çalıştırın; bu bir CI sisteminden yapılmamalıdır. Kimlik doğrulaması için talimatları izleyin. Belirteç yapılar arasında geçerli olacağından, bu adımı proje başına yalnızca bir kez gerçekleştirmeniz gerekir. Belirteç bir parola gibi ele alınmalıdır; gizli tutulduğundan emin olun.
CI ortamınız, derleme komut dosyalarında kullanılabilecek ortam değişkenlerini belirlemenize izin veriyorsa, değeri erişim belirteci dizesi olan FIREBASE_TOKEN
adlı bir ortam değişkeni oluşturmanız yeterlidir. Firebase CLI, FIREBASE_TOKEN
ortam değişkenini otomatik olarak alacak ve öykünücüler düzgün şekilde başlayacaktır.
Son çare olarak, belirteci derleme komut dosyanıza dahil edebilirsiniz, ancak güvenilmeyen tarafların erişimi olmadığından emin olun. Bu sabit kodlanmış yaklaşım için firebase emulators:exec
komutuna --token "YOUR_TOKEN_STRING_HERE"
ekleyebilirsiniz.
Emulator Hub REST API'sini kullanın
Çalışan emülatörleri listeleyin
Şu anda çalışan emülatörleri listelemek için Emulator Hub'ın /emulators
uç noktasına bir GET
isteği gönderin.
curl localhost:4400/emulators
Sonuç, çalışan tüm öykünücüleri ve bunların ana bilgisayar/bağlantı noktası yapılandırması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 İşlev Tetikleyicilerini Etkinleştir / Devre Dışı Bırak
Bazı durumlarda, yerel işlevi ve uzantı tetikleyicilerini geçici olarak devre dışı bırakmanız gerekecektir. Örneğin, Cloud Functions veya Extensions öykünücülerinde çalışan herhangi bir onDelete
işlevini tetiklemeden Cloud Firestore öykünücüsündeki 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 detaylandıran bir JSON nesnesi olacaktır.
{
"enabled": false
}
Yerel işlev tetikleyicilerini devre dışı bırakıldıktan sonra 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 detaylandıran bir JSON nesnesi olacaktır.
{
"enabled": true
}
Emülatör SDK entegrasyonları
Bu bölümdeki tablolar, istemci ve Yönetici SDK'ları tarafından hangi öykünücülerin desteklendiğini gösterir. Gelecek , emülatör desteğinin planlandığı ancak henüz mevcut olmadığı anlamına gelir.
İstemci SDK'sı kullanılabilirliği
Android | Apple platformları | ağ | Firebase kullanıcı arayüzü Android | Firebase kullanıcı arayüzü iOS | Firebase kullanıcı arayüzü ağ | |
---|---|---|---|---|---|---|
Gerçek Zamanlı Veritabanı | 19.4.0 | 7.2.0 | 8.0.0 | 6.4.0 | Gelecek | Yok |
Bulut Firestore | 21.6.0 | 7.2.0 | 8.0.0 | 6.4.0 | Gelecek | Yok |
kimlik doğrulama | 20.0.0 | 7.0.0 | 8.0.0 | 7.0.0 | Gelecek | Gelecek |
Bulut depolama | 20.0.0 | 8.0.0 | 8.4.0 | Yok | Yok | Yok |
Bulut İşlevleri | 19.1.0 | 7.2.0 | 8.0.0 | Yok | Yok | Yok |
Barındırma | Yok | Yok | Yok | Yok | Yok | Yok |
Uzantılar | Yok | Yok | Yok | Yok | Yok | Yok |
Yönetici SDK'sı kullanılabilirliği
düğüm | Java | piton | Gitmek | |
---|---|---|---|---|
Gerçek Zamanlı Veritabanı | 8.6.0 | 6.10.0 | 2.18.0 | Gelecek |
Bulut Firestore | 8.0.0 | 6.10.0 | 3.0.0 | 1.0.0 |
kimlik doğrulama | 9.3.0 | 7.2.0 | 5.0.0 | 4.2.0 |
Bulut depolama | 9.8.0 | Gelecek | Gelecek | Gelecek |
Bulut İşlevleri | Yok | Yok | Yok | Yok |
Barındırma | Yok | Yok | Yok | Yok |
Uzantılar | Yok | Yok | Yok | Yok |