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

Firebase Local Emulator Suite'in bir parçası olan App Hosting emülatörü kullanarak App Hosting dağıtımdan önce uygulamanızın yerel testlerini gerçekleştirebilirsiniz.

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

Bu konuda, App Hosting ile ilgili temel bilgilere sahip olduğunuz varsayılmaktadır. Gerekirse App Hosting girişini ve diğer materyalleri inceleyerek App Hosting'ın nasıl çalıştığını anlayabilirsiniz.

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'da dağıtılan web uygulamalarının kalitesini artırabilir.

App Hosting emülatörü:

  1. Web uygulamanızı yerel olarak çalıştırmanıza olanak tanır. apphosting.yaml yapılandırma dosyalarında tanımlanan ortam değişkenleri ve gizli anahtarlar kullanılır.
  2. apphosting.emulator.yaml dosyasıyla emülatörde kullanılacak ortam değişkenlerini ve gizli anahtarları geçersiz kılabilir.
  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. Ayarlamak istediğiniz diğer Firebase emülatörlerine ek olarak App Hosting Emulator seçeneğini de belirleyin. CLI, aşağıdakiler de dahil olmak üzere bazı App Hosting emülatör değerleri için sizden bilgi ister:

  • Uygulamanızın projeye göre kök dizini. App Hosting ile monorepo'lar kullanıyorsanız bu önemlidir.
  • Yerel geliştirme için değerleri geçersiz kılmak isteyip istemediğiniz.
  • Ekip arkadaşlarınıza 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 içindeki App Hosting emülatör yapılandırmanızı güncellemek için kullanılır. Ayrıca, firebase.json dosyasını doğrudan güncelleyerek uygulama barındırma emülatörünü de yapılandırabilirsiniz. App Hosting emülatörünün şeması şöyledir:

{
  ...
  "emulators": {
    "apphosting": {
      "startCommand": <command> [optional]
      "rootDirectory": <path> [optional]
      }
    }
  }
  • startCommand, emülatör başlatıldığında otomatik olarak oluşturulur ve ayarlanır. Belirtilmezse emülatör, paket yöneticinizin geliştirme komutunu algılar ve çalıştırır.
  • rootDirectory, tek depolu proje kurulumlarını desteklemek için kullanılır. Web uygulamanız bir alt dizindeyse bu dizinin köke göreli yolunu (firebase.json konumunu) sağlamanız gerekir.

Emülasyonu yönetme

Emülatör başlatıldığında uygulamanızın kök dizininde bir apphosting.emulator.yaml dosyası oluşturulur. Bu yapılandırma dosyası, üretimde kullanılan apphosting.yaml dosyasıyla aynı şemaya sahiptir ancak kesinlikle yerel geliştirme için tasarlanmıştır. Varsayılan olarak, emülatör yapılandırmayı apphosting.yaml dosyanızdan okur. Ancak apphosting.emulator.yaml dosyası varsa bu dosyadaki yapılandırmalara öncelik verilir.

apphosting.emulator.yaml dosyası, işlenip iş arkadaşlarıyla güvenli bir şekilde paylaşılacak şekilde tasarlanmıştır. Hassas verilerin yanlışlıkla kaynak depolarına gönderilmesini önlemek için apphosting.yaml içindeki tüm gizli ortam değişkenleri apphosting.emulator.yaml içinde de gizli olmalıdır. Üretim ve yerel geliştirme arasında değiştirilmesi gerekmeyen bir sır varsa (ör.Gemini API anahtarı) apphosting.emulator.yaml'ya eklenmesi gerekmez. Bunun yerine ekibinize sırra erişim izni verin.

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

Kullanıcılara veya gruplara sırlara erişim izni verme

apphosting.emulator.yaml içinde depolanan gizli anahtarlar, emülatör başlatıldığında okunur. Bu, geliştirme ekibinizin gizli bilgiye erişmesi gerektiği anlamına gelir. E-posta ile bir kullanıcıya veya gruba sırra erişim izni vermek için apphosting:secrets:grantaccess komutunu kullanabilirsiniz.

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

Geçerli olduğu durumlarda, apphosting.emulator.yamlüretim verilerine erişimi olmayan, küresel yan etkileri olamayan (e-posta gönderme, kredi kartlarından ödeme alma) ve/veya daha düşük kotalara sahip olan yalnızca test amaçlı anahtarlar kullanmayı düşünün. Bu, incelenmemiş kodun gerçek dünyada daha az sonuç doğurmasını sağlar.

Gizli bilgilere erişimi yönetmek için tek tek kullanıcılara erişim izni vermek yerine Google Gruplar'ı kullanmayı deneyin. Bu sayede, yeni üyeleri geliştirici ekibinize dahil etmek kolaylaşır. Çünkü gruba eklenen üyeler, ihtiyaç duydukları tüm sırlara erişebilir. Geliştiricilerin birbirleriyle iletişim kurduğu uygun bir grubunuz zaten olabilir. Google Grupları ile erişimi kontrol etmek, ekibinizden ayrılan geliştiricilerin e-posta grubundan kaldırıldıklarında tüm sırlara erişimini kaybetmesini de sağlar. Gizli, üretim verilerine veya gerçek dünyadaki yan etkilere erişebiliyorsa yine de anahtarınızı döndürmeniz ve firebase apphosting:secrets:set ile yeni bir değer vermeniz 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.