App Hosting'e dağıtmanın alternatif yolları

Çoğu zaman, Firebase konsolundan otomatik kullanıma sunma veya manuel olarak tetiklenen kullanıma sunma yöntemini kullanmanızı öneririz. Ancak daha özelleştirilmiş bir dağıtım akışına ihtiyacınız olabilir. App Hosting, özel dağıtım için birden fazla seçeneğe sahiptir.

Kaynaktan dağıtma

Kaynaktan dağıtım, uygulamanızın kaynak kodunu ve yapılandırmasını kalıcı bir GitHub bağlantısı gerekmeden doğrudan App Hosting platformuna aktarmanıza olanak tanır.

Kaynaktan dağıtım yaparken App Hosting, kaynak kodunuzu bir Google Cloud Storage paketine yükler, çerçevenizin derleme komutunu Cloud Build içinde çalıştırır ve derlenen yapıları Cloud Run ile Cloud CDN'ye dağıtır. Yerel kaynak dağıtımları için GitHub dağıtımlarıyla aynı derleme süreci kullanılır. Projenizde bir .gitignore dosyası varsa bu dosyada listelenen dosya ve klasörler dağıtımınızdan hariç tutulur.

Firebase CLI veya Firebase konsolunu kullanarak yerel bir kaynaktan dağıtım yapabilirsiniz.

Gerekli IAM İzinleri ve Altyapı Kurulumu

Hem Firebase CLI hem de Firebase konsolu, kaynak arşivlerinizi depolamak ve derlemek için aynı arka uç altyapısını kullandığından her iki dağıtım yöntemi için de aynı IAM izin şartları geçerlidir.

Tam gereksinimler, belirli bir konuma (bölgeye) ilk kez dağıtım yapıp yapmadığınıza bağlıdır. İzinler hakkında daha fazla bilgi için Firebase IAM'ye genel bakış ve belirli Firebase App Hosting izinleri bölümlerini inceleyin.

İlk Oryantasyon İzinleri (Bir konuma ilk dağıtım)

Bir proje konumunda yerel kaynak dağıtımı ilk kez başlatıldığında App Hosting, arşivlerinizi depolamak için bir GCS paketi sağlamalı ve App Hosting hizmet aracısına bu pakete erişim izni vermelidir. Bunlar proje düzeyinde yönetim görevleri olduğundan proje sahibi veya IAM yöneticisi izinleri gerekir. Temel Düzenleyici veya Görüntüleyici rolüne sahip bir kullanıcı bu ilk kurulumu gerçekleştiremez ve engellenir.

Ön koşul kurulum izinleri şunlardır:

  • Storage API'yi etkinleştirme: serviceusage.services.enable
  • Kaynak paketi oluşturma: storage.buckets.create ve storage.buckets.list
  • Hizmet aracısını yapılandırma: Derlemeler sırasında yüklenen kodu getirebilmesi için resourcemanager.projects.setIamPolicy hizmet aracısına okuma erişimi (roles/storage.objectViewer) verin (App Hosting).

İlk dağıtım için GCS paketi 30 günlük bir yaşam döngüsüyle oluşturulur ve bu sürenin sonunda silinir. Ancak bu zaman aralığını Cloud Console'da Cloud Storage -> Buckets (Paketler) -> Lifecycle (Yaşam döngüsü) -> Rules (Kurallar) bölümünden yönetebilirsiniz. Nesne yaşam döngülerini yönetme başlıklı makaleyi inceleyin.

Sonraki dağıtımlar için izinler (Konum başlatıldıktan sonra)

Kaynak paketi ve rol bağlamaları bir konum için başlatıldıktan sonra (ilk CLI dağıtımı veya konsol kurulumuyla) normal Geliştiriciler, Düzenleyiciler veya App Hosting Yöneticiler güncellemeleri dağıtabilir. Rutin dağıtımlar için proje düzeyinde yönetim izinleri gerekmez.

Etkin dağıtım izinleri şunlardır:

  • Paketi doğrulama: storage.buckets.list
  • Kaynak arşivini yükleyin: storage.objects.create
  • Derleme ve kullanıma sunma tetikleme: Standart App Hosting izinleri (apphosting.builds.create ve apphosting.rollouts.create)

Firebase CLI ile kaynaktan dağıtma

Firebase CLI v14.4.0 ve sonraki sürümler, uygulamanızın kaynak kodunu ve yapılandırmalarını doğrudan yerel makinenizden Firebase'e aktarmanıza olanak tanır. Diğer Firebase dağıtımlarını (ör. güvenlik kuralları veya işlevler) zaten yönetiyorsanız ve web uygulamanızı ve arka uç hizmetlerinizi tek bir CLI komutuyla birlikte dağıtmak istiyorsanız bu yöntem kullanışlıdır.

Ön koşullar

  • Projeleriniz Blaze planında olmalıdır.
  • firebase-tools 14.4.0 sürümü veya daha yeni bir sürümü kullanmanız gerekir.

Dağıtım Adımları

  1. Yerel proje dizininizde firebase init apphosting komutunu çalıştırın.
  2. İstendiğinde Mevcut bir projeyi kullan'ı seçin ve hedef Firebase projenizi belirleyin.
  3. Dağıtım için yeni veya mevcut bir arka uç seçin. Bu adım, yerel dizininiz için App Hosting dağıtımlarını ayarlar ve yapılandırma ayrıntılarını ister:
    • Dağıtımın yapılacağı arka ucun kimliği
    • Yeni bir arka uç oluşturuluyorsa dağıtımın yapılacağı bölge
    • Uygulama kodunuzun kök dizininin yolu
    • Tercih ettiğiniz Node.js çalışma zamanı. Sürüm oluşturulmuş bir çalışma zamanı seçildiğinde, temel ortamınıza güvenlik yamalarını otomatik olarak uygulamak için Otomatik Temel Görüntü Güncellemeleri (ABIU) etkinleştirilir.
  4. App Hosting, dağıtım tercihlerinizi firebase.json dosyasına kaydeder. Dosya henüz mevcut değilse yerel projenizde oluşturulur. Başlatma başarıyla tamamlandıktan sonra kaynak kodunuzu dağıtmak için firebase deploy komutunu çalıştırın.

Örnek firebase.json

{
  "apphosting": [
    {
      "backendId": "my-backend",
      // rootDir specifies the directory containing the app to deploy, but the entire
      // parent directory of firebase.json will be zipped and uploaded to ensure that
      // dependencies outside of the app directory will be available at build time.
      "rootDir": "./my-app",
      "ignore": [
        "node_modules",
        ".git",
        "firebase-debug.log",
        "firebase-debug.*.log",
        "functions"
      ]
    }
  ]
}

Firebase konsolu ile dağıtma (ZIP yükleme)

Firebase konsolu, sıkıştırılmış bir kaynak arşivini doğrudan yükleyerek uygulamaları dağıtmak için grafik arayüz sağlar. Bu, GitHub'ı kullanmayı tercih etmediğiniz veya farklı bir CI/CD kurulumu tercih ettiğiniz durumlarda GitHub bağlantı akışına alternatif olarak kullanılabilir.

Arşiv yüklemeleri, ilk arka uç oluşturma sırasında veya başlangıçta Firebase CLI kullanılarak dağıtılan arka uçlar da dahil olmak üzere mevcut bir arka uçta manuel kullanıma sunma oluşturulurken yapılabilir.

Desteklenen Biçimler

Console yükleyicisi, iki sıkıştırılmış arşiv biçimini yerel olarak doğrular ve kabul eder:

  • .zip
  • .tgz

Bu biçimler, dosya yükleyicinin açıklama metninde açıkça gösterilir.

Dağıtım Adımları

A seçeneği: İlk arka uç oryantasyonu sırasında
  1. Kaynak seçin: Arka uç oluşturma sihirbazında, "Uygulamanızı nasıl içe aktarmak istersiniz?" adımında Zip dosyası yükle'yi seçin.
  2. Oryantasyon Hazırlığı: "Sonraki"yi tıkladığınızda arka planda hazırlık akışı tetiklenir. Bu akış, Storage API'yi sırayla etkinleştirir, doğru rollerin ayarlanmasını sağlar ve paketi ekler ya da günceller. Kullanıcı arayüzünde, dinamik durum mesajları içeren bir yükleme simgesi gösterilir: "API etkinleştiriliyor...", "Checking permissions..." (İzinler kontrol ediliyor...) ve "Preparing bucket..." (Paket hazırlanıyor...) mesajlarını görürsünüz.
    • Hata İşleme ve Koruma Önlemleri: Hazırlık adımlarından herhangi biri başarısız olursa (ör. sahip olmayan bir kullanıcının yetersiz IAM izinleri nedeniyle 403 PERMISSION_DENIED hatası alması) kullanıcı arayüzünde, proje sahibiyle iletişime geçmenizi isteyen özel bir uyarı gösterilir. Adım adım gezinme kesin olarak kilitlenir ve sorun çözülene kadar "Sonraki" düğmesi ile son "Bitir ve Dağıt" düğmesi devre dışı kalır.
  3. Dosyaları yükleme: Hazırlık başarıyla tamamlandıktan sonra arşiv dosyanızı seçin veya dosya yükleyici bileşenine sürükleyin.
  4. Configure Settings (Ayarları Yapılandır): App root directory'nizi (Uygulama kök dizini) belirtin (varsayılan olarak /).

  5. Finish and Deploy'u (Bitir ve Dağıt) tıklayın: ZIP yüklemeleri için bağımsız "Finish" (Bitir) düğmesi devre dışı bırakılır. Bunun nedeni, arşiv yüklemenin tek seferlik bir işlem olması ve işlevsel bir arka uç sağlamak için hemen ardından dağıtım yapılması gerekmesidir.

B seçeneği: Manuel kullanıma sunma oluşturma
  1. İletişim kutusunu açma: App Hosting kontrol panelinde Kullanıma sunma oluştur'u tıklayın.
  2. Kaynak seçin: İletişim kutusunun adım adım talimatlarında ZIP dosyası yükle'yi seçin. Arka uçta mevcut bir GitHub bağlantısı yoksa "GitHub" seçeneği devre dışı bırakılır.
  3. Hazırlık ve Yükleme: Seçim, aynı arka plan hazırlık akışını ("API etkinleştiriliyor...", "Checking permissions..." (İzinler kontrol ediliyor...) ve "Preparing bucket..." (Paket hazırlanıyor...) mesajlarını görürsünüz. İşlem başarılı olduktan sonra yükleyiciyi kullanarak arşiv dosyanızı sürükleyin veya seçin, Uygulama kök dizini'ni belirtin ve derleme ile kullanıma sunma işlemlerini tetiklemek için Dağıt'ı tıklayın.

Terraform kullanarak dağıtma

Derleme süreci ve dağıtılan ortam üzerinde daha fazla kontrole ihtiyacınız varsa Terraform'u kullanarak dağıtım yapabilirsiniz. Terraform, açıklayıcı yapılandırma dosyalarını kullanarak App Hosting kaynaklarınızı tanımlayıp yönetmenize olanak tanır. Ayrıca kaynak kodunuzdan derleme yapmak için App Hosting'a güvenmek yerine kendi önceden oluşturulmuş container görüntünüzü doğrudan App Hosting'a dağıtma imkanı sunar.

Terraform'u kullanmaya yeni başladıysanız Terraform ve Firebase'i kullanmaya başlama başlıklı makaleyi inceleyin. Terraform'u zaten biliyorsanız örnek yapılandırma dosyaları ve diğer App Hosting kaynaklarıyla başlayabilirsiniz.

CI/CD için GitHub bağlantısı oluşturma

Firebase konsolunda bir arka ucun ayarlarının Dağıtım sekmesinden istediğiniz zaman GitHub deposu bağlayabilirsiniz. Bu sayede, yerel bir ortamdan uygulama prototipi dağıtabilir ve hazır olduğunuzda otomatik bir CI/CD ardışık düzenine geçebilirsiniz.

Yapay zeka araçlarını kullanarak dağıtma

Firebase Studio hizmetini 22 Mart 2027'de kullanımdan kaldırıyoruz. App Hosting arka uçlarınız etkilenmese de Firebase Studio uygulamasındaki Yayınla düğmesi kullanımdan kaldırılacak. URL'nizi değiştirmeden güncelleme yayınlamaya devam etmek için projenizi taşıyın. Nasıl taşıyacağınızı öğrenin.