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 Emulator Suite'i yükleyin
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 yükleyin . Emulator Suite'i kullanmak için CLI 8.14.0 veya daha yüksek bir sürüme ihtiyacınız olacak. 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ı belirtmek için ekrandaki talimatları 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, karşılık gelen ö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 emülatör yüklendikten sonra, Firebase CLI sürümünüzü güncelleyene kadar hiçbir güncelleme kontrolü yapılmaz ve hiçbir ek otomatik indirme gerçekleşmez.
Emulator Suite'i Yapılandır
firebase.json
dosyasında isteğe bağlı olarak öykünücülerin ağ bağlantı noktalarını ve Güvenlik Kuralları tanımlarının yolunu 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 emülatörler varsayılan bağlantı noktalarını dinleyecek ve Cloud Firestore, Realtime Database ve Cloud Storage for Firebase emülatörleri açık veri güvenliğiyle çalışacaktır.
Emretmek | Tanım |
---|---|
başlatma emülatörleri | Bir öykünücü başlatma sihirbazını başlatın. Yüklenecek emülatörleri tanımlayın ve isteğe bağlı olarak emülatör bağlantı noktası ayarlarını belirtin. init emulators tahribatsızdır; varsayılanların kabul edilmesi mevcut öykünücü yapılandırmasını koruyacaktır. |
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ı |
---|---|
Kimlik doğrulama | 9099 |
Emülatör Paketi Kullanıcı Arayüzü | 4000 |
Bulut İşlevleri | 5001 |
Eventarc | 9299 |
Gerçek Zamanlı Veritabanı | 9000 |
Bulut Firestore | 8080 |
Firebase için Bulut Depolama | 9199 |
Firebase Barındırma | 5000 |
Pub/Sub | 8085 |
Proje kimliği yapılandırması
Öykünücüleri nasıl çağırdığınıza bağlı olarak, farklı Firebase proje kimlikleri kullanarak bir öykünücünün birden çok örneğini veya belirli bir proje kimliği için birden çok öykünücü örneğini çalıştırabilirsiniz. Bu gibi durumlarda emülatör örnekleri ayrı bir ortamda çalışmaktadır.
Emulator Suite kullanıcı arayüzünün, farklı ürün emülatörlerinin ve belirli bir emülatörün çalışan tüm örneklerinin her durumda doğru şekilde iletişim kurabilmesi için tüm emülatör çağrıları için tek bir proje kimliği ayarlamak genellikle iyi bir uygulamadır.
Local Emulator Suite, ortamda birden fazla proje kimliği algıladığında uyarı verir; ancak firebase.json
dosyanızda singleProjectMode
anahtarını false
olarak ayarlayarak bu davranışı geçersiz kılabilirsiniz.
Uyuşmazlık olup olmadığını görmek için proje kimliği beyanlarını kontrol edebilirsiniz:
- Komut satırındaki varsayılan proje. Varsayılan olarak proje kimliği, başlangıçta
firebase init
veyafirebase use
ile seçilen projeden alınacaktır. Projelerin listesini görüntülemek (ve hangisinin seçildiğini görmek) içinfirebase projects:list
kullanın. - Kural birimi testleri. Proje kimliği genellikle Kural Birimi Testi kitaplığı yöntemleri
initializeTestEnvironment
veyainitializeTestApp
yapılan çağrılarda belirtilir. - Komut satırı
--project
bayrağı. Firebase CLI--project
bayrağının iletilmesi, varsayılan projeyi geçersiz kılar. Birim testlerinde ve uygulama başlatmada bayrak değerinin proje kimliğiyle eşleştiğinden emin olmanız gerekir.
Ayrıca Apple platformlarınızı , Android'inizi ve web projelerinizi yapılandırırken belirlediğiniz platforma özel proje kimliği yapılandırmalarını da kontrol edin.
Güvenlik Kuralları yapılandırması
Emülatörler Güvenlik Kuralları yapılandırmasını firebase.json
database
, firestore
ve storage
yapılandırma anahtarlarından 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": {
"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
Gerçek Zamanlı Veritabanı emülatörü, Cloud Firestore emülatörü ve Cloud Storage for Firebase emülatörü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 artırabilirsiniz:
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g"
gibi boşluklarla ayrılmış tırnak işaretleri içinde birden fazla bayrak belirtilebilir. Bayraklar yalnızca öykünücülerin Java tabanlı bileşenlerini etkiler ve Emulator Suite Kullanıcı Arayüzü gibi Firebase CLI'nin diğer bölümleri üzerinde hiçbir etkisi yoktur.
Emülatörleri başlatın
Emülatörleri manuel olarak sonlandırılana kadar çalışacak şekilde başlatabilir veya belirlenmiş bir test komut dosyası süresince çalıştırıp ardından otomatik olarak kapatabilirsiniz.
Emretmek | Tanım | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
öykünücüler:başlat | firebase.json dosyasında 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 edecektir. emulators:start çağrıldığında emülatörler önceden kurulu değilse ~/.cache/firebase/emulators/ dizinine indirilir.
| ||||||||||||
öykünücüler:exec scriptpath | firebase.json dosyasında yapılandırılan Firebase ürünleri için emülatörleri başlattıktan sonra betiği scriptpath konumunda çalıştırın. Betiğin çalışması bittiğinde emülatör işlemleri 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 aktarın
Paylaşılabilir, ortak bir temel veri kümesi olarak kullanmak üzere Authentication, Cloud Firestore, Realtime Database ve Cloud Storage for Firebase emülatörlerinden 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, Gerçek Zamanlı Veritabanı veya Firebase emülatörü için Cloud Storage . Ç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 Emulator Suite'in kapsayıcılarla kurulumu ve yapılandırılması basittir.
Dikkat edilmesi gereken birkaç sorun var:
JAR dosyaları
~/.cache/firebase/emulators/
konumunda yüklenir ve önbelleğe alınır.- Tekrarlanan indirmelerden kaçınmak için bu yolu CI önbellek yapılandırmanıza eklemek isteyebilirsiniz.
Deponuzda bir
firebase.json
dosyası yoksa, hangi emülatörlerin 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 Hosting ö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 gerekecektir. Diğer emülatörler 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ğrulamak için talimatları izleyin. Belirteç tüm derlemelerde geçerli olacağından bu adımı proje başına yalnızca bir kez uygulamanız 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 belirtmenize izin veriyorsa, FIREBASE_TOKEN
adlı bir ortam değişkeni oluşturmanız yeterlidir; değer, erişim belirteci dizesidir. Firebase CLI, FIREBASE_TOKEN
ortam değişkenini otomatik olarak alacak ve emülatörler düzgün şekilde başlayacaktır.
Son çare olarak, belirteci derleme betiğinize dahil edebilirsiniz ancak güvenilmeyen tarafların erişime sahip 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'sini kullanın
Çalışan emülatörleri listele
Şu anda çalışan öykünücüleri 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ştirme / Devre Dışı Bırakma
Bazı durumlarda yerel işlevi ve uzantı tetikleyicilerini geçici olarak devre dışı bırakmanız gerekebilir. Ö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ının 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 | 4.7.2 |
Firebase için Bulut Depolama | 20.0.0 | 8.0.0 | 8.4.0 | 7.0.0 | 11.0.0 | 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ının kullanılabilirliği
Düğüm | Java | Python | 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 |
Firebase için 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 |