Uygulama dağıtımınızı yerel olarak test etme

Firebase Local Emulator Suite'in bir parçası olan App Hosting emülatörünü kullanarak uygulamanızı App Hosting dağıtımından önce yerel olarak test edebilirsiniz.

App Hosting emülatörünü kullanmadan önce genel Firebase Local Emulator Suite iş akışını anladığınızdan, Local Emulator Suite'yi yükleyip yapılandırdığınızdan ve CLI komutlarını incelediğinizden emin olun.

Bu konuda, App Hosting hakkında bilgi sahibi olduğunuz varsayılmaktadır. Gerekirse App Hosting'un işleyiş şeklini anlamanıza yardımcı olması için App Hosting girişini ve diğer materyalleri inceleyin.

App Hosting emülatörüyle neler yapabilirim?

App Hosting emülatörü, web uygulamalarınızı yerel olarak test etmenize ve iyileştirmenize olanak tanır. Bu, geliştirme sürecinizi kolaylaştırabilir ve Firebase kullanılarak oluşturulan ve App Hosting'te dağıtılan web uygulamalarının kalitesini artırabilir.

App Hosting emülatörü:

  1. Web uygulamanızı, apphosting.yaml yapılandırma dosyalarında tanımlanan ortam değişkenleri ve gizli anahtarlarla yerel olarak çalıştırmanıza olanak tanır.
  2. apphosting.emulator.yaml dosyasıyla emülatörde kullanılmak üzere ortam değişkenlerini ve gizli anahtarları geçersiz kılabilirsiniz.
  3. Diğer Firebase emülatörleriyle birlikte kullanılabilir. Firestore, Auth veya başka bir emülatör kullanıyorsanız Local Emulator Suite, bu emülatörlerin App Hosting emülatöründen önce başlatılmasını sağlar.

Emülatörü yapılandırma

Başlamak için Local Emulator SuiteYerel Emulator Suite'i yükleme, yapılandırma ve entegre etme bölümünde açıklandığı şekilde yükleyip başlatın. Kurmak istediğiniz diğer Firebase emülatörlerine ek olarak App Hosting Emulator seçeneğini de belirlediğinizden emin olun. CLI, sizden aşağıdakiler gibi bazı App Hosting emülatör değerlerini ister:

  • Uygulamanızın projeye göre kök dizini. App Hosting ile monorepo kullanıyorsanız bu önemlidir.
  • Yerel geliştirme için değerleri geçersiz kılmak isteyip istemediğinizi belirtin.
  • Ekip üyelerine yerel geliştirme için gizli anahtarlara erişim izni vermek isteyip istemediğiniz.
firebase init emulators
=== Emulators Setup
? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ App Hosting Emulator
 ◯ Firestore Emulator
 ◯ Database Emulator
 ◯ Hosting Emulator
 ◯ Pub/Sub Emulator
 ◯ Storage Emulator
 ◯ Eventarc Emulator
(Move up and down to reveal more choices)

? Specify your app's root directory relative to your project (./)

? The App Hosting emulator uses a file called apphosting.emulator.yaml to
override values in apphosting.yaml for local testing. This codebase does not
have one, would you like to create it? (Y/n)

? Which environment variables would you like to override? (Press <space> to
select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ MEMCACHE_ADDR
 ◯ API_KEY

? What new value would you like for plaintext MEMCACHE_ADDR?

? What would you like to name the secret reference for API_KEY? (test-api-key)

? What new value would you like for secret TESTKEY [input is hidden]? [input is hidden]

? Your config has secret values. Please provide a comma-separated list of users
or groups who should have access to secrets for local development:

✔  Successfully set IAM bindings on secret test-api-key.

Bu kurulum akışında sağladığınız tüm değerler, firebase.json'daki App Hosting emülatör yapılandırmanızı güncellemek için kullanılır. Ayrıca, firebase.json'ü doğrudan güncelleyerek uygulama barındırma emülatörünü de yapılandırabilirsiniz. App Hosting emülatörünün şeması:

{
  ...
  "emulators": {
    "apphosting": {
      "startCommand": <command> [optional]
      "rootDirectory": <path> [optional]
      }
    }
  }
  • startCommand, emülatör başlatılırken otomatik olarak oluşturulur ve ayarlanır. Bu parametre sağlanmazsa emülatör, paket yöneticinizin dev komutunu algılayıp çalıştırır.
  • rootDirectory, monorepo proje kurulumlarını desteklemek için kullanılır. Web uygulamanız bir alt dizindeyse bu dizinin köke göreli yolunu (firebase.json konumu) sağlamanız gerekir.

Emülasyonu yönetme

Emülatör başlatma işlemi, uygulamanızın kök dizininde bir apphosting.emulator.yaml dosyası oluşturur. Bu yapılandırma dosyası, üretimde kullanılan apphosting.yaml dosyasıyla aynı şemaya sahiptir ancak yalnızca yerel geliştirme için tasarlanmıştır. Emülatör varsayılan olarak apphosting.yaml dosyanızdaki yapılandırmayı okur ancak bir apphosting.emulator.yaml dosyası varsa bu dosyadaki yapılandırmalara öncelik verilir.

apphosting.emulator.yaml dosyası, iş arkadaşlarınızla güvenli bir şekilde paylaşılabilmesi ve gönderilebilmesi için tasarlanmıştır. Hassas verileri kaynak depolarına yanlışlıkla göndermemeniz için apphosting.yaml'te gizli olan tüm ortam değişkenleri apphosting.emulator.yaml'te de gizli olmalıdır. Bir gizliliğin üretim ve yerel geliştirme arasında değiştirilmesi gerekmiyorsa (ör.Gemini API anahtarı) apphosting.emulator.yaml'e eklenmesi gerekmez. Bunun yerine ekibinize gizliliğe erişim izni verin.

Uygulamanız çok sayıda gizli anahtar kullanıyorsa (ör.üretim, hazırlık ve yerel geliştirme için her biri farklı değerlere sahip üç farklı hizmet için API anahtarları) Cloud Secret Manager'ın ücretsiz katmanını aşabilir ve ek gizli anahtar başına ayda 0,06 ABD doları ödeyebilirsiniz. Bu ücreti ödememek için yerel yapılandırmayı kaynak denetiminin dışında yönetmeyi tercih ederseniz eski apphosting.local.yaml dosyasını kullanabilirsiniz. apphosting.emulator.yaml'ün aksine bu dosyanın, apphosting.yaml'ta gizli değer olan ortam değişkenleri için düz metin değerleri sağlamasına izin verilir.

Kullanıcılara veya gruplara gizli bilgilere erişim izni verme

apphosting.emulator.yaml'te depolanan gizli anahtarlar, emülatör başladığında okunur. Bu, geliştirme ekibinizin gizliye erişmesi gerektiği anlamına gelir. Bir kullanıcıya veya gruba e-posta ile gizli bir kaynağa erişim izni vermek için apphosting:secrets:grantaccess komutunu kullanabilirsiniz.

firebase apphosting:secrets:grantaccess test-api-key --emails my-team@my-company.com

Uygun olduğunda, apphosting.emulator.yaml'de üretim verilerine erişimi olmayan, genel yan etkileri (e-posta gönderme, kredi kartından ödeme alma) olmayan ve/veya daha düşük kotalara sahip yalnızca test anahtarları kullanmayı düşünün. Bu, incelenmemiş kodun gerçek dünyada daha az soruna yol açmasını sağlar.

Gizli bilgilere erişimi tek tek kullanıcılara vermek yerine Google Gruplar'ı kullanarak yönetebilirsiniz. Bu sayede, yeni üyeler gruba eklendiğinde ihtiyaç duydukları tüm sırlara erişebilecekleri için geliştirici ekibinize yeni üye ekleme işlemi basitleştirilir. Geliştiricilerin birbirleriyle iletişim kurduğu uygun bir grubunuz zaten olabilir. Google Gruplar'ın erişimini kontrol etmek, ekibinizden ayrılan geliştiricilerin e-posta grubundan kaldırıldığında tüm sırlara erişimini kaybetmesini de sağlar. Gizli anahtar, üretim verilerine veya gerçek dünyadaki yan etkilere erişebiliyorsa anahtarınızı döndürmek ve firebase apphosting:secrets:set ile yeni bir değer vermek yine de uygun olabilir.

Emülatörü çalıştırma

firebase emulators:start

Bu işlem, App Hosting emülatörü de dahil olmak üzere firebase.json dosyanızda tanımlanan tüm emülatörleri başlatır.