Firebase Local Emulator Suite, tek seferlik prototip oluşturma oturumlarından üretim ölçeğinde sürekli entegrasyon iş akışlarına kadar her şey için farklı prototip ve test ortamları için kurulabilir ve yapılandırılabilir.
Local Emulator Suite'i kurun
Emulator Suite'i kurmadan önce ihtiyacınız olacak:
Emulator Suite'i kurmak için:
- Firebase CLI'yi kurun. Firebase CLI kurulu değilse, şimdi kurun . Emulator Suite'i kullanmak için CLI sürüm 8.14.0 veya üstüne 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ı belirlemek için ekrandaki istemleri 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 izin veren 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 kontrolü yapılmaz ve ek otomatik indirmeler gerçekleşmez.
Emulator Suite'i Yapılandırın
firebase.json
dosyasında öykünücülerin 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
el ile 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ında dinler ve Cloud Firestore, Realtime Database ve Cloud Storage for Firebase öykünücüleri açık veri güvenliğiyle çalışır.
Emretmek | Tanım |
---|---|
init emülatörleri | Bir öykünücü başlatma sihirbazı başlatın. Kurulacak öykünücüleri tanımlayın 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, geçerli ö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.
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, belirli bir proje kimliği için farklı Firebase proje kimlikleri veya birden çok öykünücü örneği kullanarak bir öykünücünün birden çok örneğini çalıştırabilirsiniz. Bu gibi durumlarda öykünücü örnekleri ayrı bir ortamda çalışır.
Tüm öykünücü çağrıları için tek bir proje kimliği belirlemek genellikle iyi bir uygulamadır, böylece Emulator Suite kullanıcı arabirimi, farklı ürün öykünücüleri ve belirli bir öykünücünün çalışan tüm örnekleri her durumda doğru şekilde iletişim kurabilir.
Local Emulator Suite, ortamda birden çok proje kimliği algıladığında uyarılar verir, ancak firebase.json
dosyanızda singleProjectMode
anahtarını false
olarak ayarlayarak bu davranışı geçersiz kılabilirsiniz.
Uyumsuzluklar için proje kimliği bildirimlerini şuralarda 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 birim testleri. Proje KIMLIĞI genellikle Kural Birimi Testi kitaplığı yöntemlerine yapılan çağrılarda belirtilir,
initializeTestEnvironment
veyainitializeTestApp
. - Komut satırı
--project
bayrağı. Firebase CLI--project
bayrağının geçirilmesi, varsayılan projeyi geçersiz kılar. Birim testlerinde ve uygulama başlatmada bayrağın değerinin proje kimliğiyle eşleştiğinden emin olmanız gerekir.
Ayrıca, Apple platformlarınızı , Android 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ı
Öykünücüler, firebase.json
database
, firestore
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": {
"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 belirleme
Gerçek Zamanlı Veritabanı öykünücüsü, Cloud Firestore öykünücüsü ve Cloud Storage for Firebase ö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şaretleri içinde birden çok işaret belirtilebilir. İşaretler yalnızca öykünücülerin Java tabanlı bileşenlerini etkiler ve Firebase CLI'nin Emulator Suite kullanıcı arabirimi gibi diğer bölümleri üzerinde hiçbir etkisi yoktur.
Öykünücüleri başlat
Öykünücüleri manuel olarak sonlandırılana kadar çalışacak şekilde veya belirlenmiş bir test komut dosyası süresince çalışacak ve ardından otomatik olarak kapatacak şekilde başlatabilirsiniz.
Emretmek | Tanım | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
öykünücüler:başlat | firebase.json yapılandırılan Firebase ürünleri için öykünücüleri başlatın. Öykünücü işlemleri, açıkça durdurulana kadar çalışmaya devam edecek. emulators:start çağrıldığında, emülatörler önceden kurulu değilse ~/.cache/firebase/emulators/ konumuna indirilir.
| ||||||||||||
öykünücüler:exec scriptpath | firebase.json yapılandırılan Firebase ürünleri için öykünücüleri başlattıktan sonra betiği scriptpath çalıştırın. Emülatör işlemleri, komut dosyası çalışmayı bitirdiğinde otomatik olarak duracaktır.
|
firebase emulators:exec
yöntemi genellikle sürekli entegrasyon iş akışları için daha uygundur.
Öykünücü 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 for Firebase ö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: export_directory dışa aktarma | Kimlik doğrulama, Cloud Firestore, Realtime Database veya Cloud Storage for Firebase öykünücüsü . Çalışan bir Cloud Firestore, Realtime Database veya Cloud Storage for Firebase ö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ılarla Emulator Suite'in kurulumu ve konfigürasyonu basittir.
Dikkat edilmesi gereken birkaç sorun var:
JAR dosyaları
~/.cache/firebase/emulators/
adresinde yüklenir 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ştur (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 emülatörler oturum açmayı gerektirmez.
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ı yapmak için talimatları izleyin. Belirteç yapılarda 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 yapı betiklerinde kullanılabilecek ortam değişkenlerini belirtmenize izin veriyorsa, basitçe FIREBASE_TOKEN
adlı, erişim belirteci dizesi olan bir ortam değişkeni oluşturun. Firebase CLI, FIREBASE_TOKEN
ortam değişkenini otomatik olarak alacak ve öykünücüler düzgün bir ş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 öykünücüleri 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ştir / Devre Dışı Bırak
Bazı durumlarda, yerel işlev ve uzantı tetikleyicilerini geçici olarak devre dışı bırakmanız gerekir. Ö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
}
Devre dışı bırakıldıktan sonra 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 detaylandıran bir JSON nesnesi olacaktır.
{
"enabled": true
}
Emulator 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, öykünücü desteğinin planlandığı ancak henüz mevcut olmadığı anlamına gelir.
İstemci SDK kullanılabilirliği
Android | elma 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 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 |
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 |