Cara alternatif untuk men-deploy ke App Hosting

Sebaiknya gunakan peluncuran otomatis atau peluncuran yang dipicu secara manual dari konsol Firebase. Namun, Anda mungkin memerlukan alur deployment yang lebih disesuaikan. App Hosting memiliki beberapa opsi untuk deployment kustom.

Men-deploy dari sumber

Men-deploy dari sumber memungkinkan Anda mengirimkan kode sumber dan konfigurasi aplikasi langsung ke App Hosting tanpa memerlukan koneksi GitHub yang persisten.

Saat men-deploy dari sumber, App Hosting mengupload kode sumber Anda ke bucket Google Cloud Storage, menjalankan perintah build framework Anda di Cloud Build, dan men-deploy artefak yang dikompilasi ke Cloud Run dan Cloud CDN. Proses build yang sama digunakan untuk deployment sumber lokal seperti deployment GitHub. Jika file .gitignore ada di project Anda, file dan folder yang tercantum di dalamnya akan dikecualikan dari deployment Anda.

Anda dapat men-deploy dari sumber lokal menggunakan Firebase CLI atau Firebase console.

Izin IAM yang Diperlukan dan Penyiapan Infrastruktur

Karena Firebase CLI dan konsol Firebase menggunakan infrastruktur backend yang sama untuk menyimpan dan membuat arsip sumber Anda, persyaratan izin IAM yang sama berlaku untuk kedua metode deployment.

Persyaratan yang tepat bergantung pada apakah Anda men-deploy ke lokasi (region) tertentu untuk pertama kalinya atau tidak. Untuk mengetahui informasi selengkapnya tentang izin, lihat ringkasan IAM Firebase dan izin Firebase App Hosting tertentu.

Izin untuk Pengaktifan Awal (Deployment pertama ke lokasi)

Saat deployment sumber lokal dimulai di lokasi project untuk pertama kalinya, Hosting harus menyediakan bucket GCS untuk menyimpan arsip Anda dan memberikan akses Agen Layanan Hosting untuk menjangkaunya. Karena ini adalah tugas administratif tingkat project, tugas ini memerlukan izin Project Owner atau Admin IAM. Pengguna dengan peran Editor atau Pelihat dasar tidak dapat melakukan penyiapan awal ini dan akan diblokir.

Izin penyiapan prasyarat mencakup:

  • Aktifkan Storage API: serviceusage.services.enable
  • Buat bucket sumber: storage.buckets.create dan storage.buckets.list
  • Konfigurasi Agen Layanan: resourcemanager.projects.setIamPolicy untuk memberikan akses baca Hosting (roles/storage.objectViewer) sehingga dapat mengambil kode yang diupload selama build.

Untuk deployment awal, bucket GCS dibuat dengan siklus proses 30 hari, setelah itu bucket akan dihapus. Namun, Anda dapat mengelola jangka waktu ini di Konsol Cloud di Cloud Storage -> Buckets -> Lifecycle -> Rules. Lihat mengelola siklus proses objek.

Izin untuk Deployment Berikutnya (Setelah lokasi diinisialisasi)

Setelah bucket sumber dan binding peran diinisialisasi untuk suatu lokasi (baik dengan deployment CLI awal maupun penyiapan konsol), Developer, Editor, atau Admin App Hosting reguler dapat men-deploy update. Izin administrasi level project tidak diperlukan untuk deployment rutin.

Izin deployment aktif mencakup:

  • Verifikasi bucket: storage.buckets.list
  • Upload arsip sumber: storage.objects.create
  • Memicu build & peluncuran: Izin Hosting standar (apphosting.builds.create dan apphosting.rollouts.create)

Men-deploy dari sumber dengan Firebase CLI

Firebase CLI v14.4.0 dan yang lebih baru memungkinkan Anda mengirim kode sumber dan konfigurasi aplikasi langsung dari komputer lokal ke Firebase. Cara ini praktis jika Anda sudah mengelola deployment Firebase lainnya (seperti aturan keamanan atau fungsi) dan ingin men-deploy aplikasi web dan layanan backend secara bersamaan dengan satu perintah CLI.

Prasyarat

  • Project Anda harus menggunakan paket Blaze.
  • Anda harus menjalankan firebase-tools versi 14.4.0 atau yang lebih baru.

Langkah-Langkah Deployment

  1. Jalankan firebase init apphosting di direktori project lokal Anda.
  2. Saat diminta, pilih Use an existing project dan pilih project Firebase target Anda.
  3. Pilih backend baru atau yang sudah ada untuk di-deploy; langkah ini menyiapkan deployment Hosting untuk direktori lokal Anda dan meminta detail konfigurasi:
    • ID backend yang akan di-deploy
    • Region tempat deployment dilakukan, jika membuat backend baru
    • Jalur ke direktori root kode aplikasi Anda
    • Runtime Node.js pilihan Anda. Memilih runtime berversi memungkinkan Update Image Dasar Otomatis (ABIU) untuk menerapkan patch keamanan secara otomatis ke lingkungan pokok Anda.
  4. App Hosting menyimpan preferensi deployment Anda di firebase.json, membuat file di project lokal Anda jika belum ada. Setelah inisialisasi berhasil diselesaikan, jalankan firebase deploy untuk men-deploy kode sumber Anda.

Contoh 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"
      ]
    }
  ]
}

Men-deploy dengan Firebase Console (Upload Zip)

Konsol Firebase menyediakan antarmuka grafis untuk men-deploy aplikasi dengan mengupload arsip sumber yang dikompresi secara langsung. Cara ini berfungsi sebagai alternatif alur koneksi GitHub, untuk kasus saat Anda tidak ingin menggunakan GitHub atau lebih memilih penyiapan CI/CD yang berbeda.

Upload arsip dapat dilakukan selama pembuatan backend awal atau saat membuat peluncuran manual di backend yang ada, termasuk backend yang awalnya di-deploy menggunakan Firebase CLI.

Format yang Didukung

Pengupload konsol secara native memvalidasi dan menerima dua format arsip terkompresi:

  • .zip
  • .tgz

Format ini ditampilkan secara eksplisit dalam teks deskripsi pengupload file.

Langkah-Langkah Deployment

Opsi A: Selama Proses Orientasi Backend Awal
  1. Pilih Sumber: Di wizard pembuatan backend, pilih Upload zip selama langkah "Bagaimana Anda ingin mengimpor aplikasi?".
  2. Persiapan Aktivasi: Mengklik "Berikutnya" akan memicu alur persiapan di latar belakang, yang secara berurutan mengaktifkan Storage API, memastikan peran yang benar telah disiapkan, dan meng-upsert bucket. UI menampilkan spinner pemuatan dengan pesan status dinamis: "Mengaktifkan API...", "Memeriksa izin...", dan "Menyiapkan bucket...".
    • Penanganan Error & Pembatasan: Jika langkah persiapan gagal (seperti non-Pemilik menerima 403 PERMISSION_DENIED karena izin IAM yang tidak memadai), UI akan menampilkan peringatan khusus yang menginstruksikan Anda untuk menghubungi Project Owner. Navigasi stepper dikunci sepenuhnya, dan tombol "Berikutnya" serta "Selesaikan dan Deploy" terakhir tetap dinonaktifkan hingga masalah teratasi.
  3. Upload File: Setelah penyiapan berhasil diselesaikan, pilih atau tarik file arsip Anda ke dalam komponen pengupload file.
  4. Konfigurasi Setelan: Tentukan Direktori root aplikasi (secara default /).

  5. Klik Selesaikan dan Deploy: Tombol "Selesaikan" mandiri dinonaktifkan untuk upload ZIP karena mengupload arsip adalah tindakan satu kali dan harus segera diikuti dengan deployment untuk memastikan backend berfungsi.

Opsi B: Membuat peluncuran Manual
  1. Open Dialog: Di dasbor Hosting, klik Create rollout.
  2. Pilih Sumber: Pilih Upload zip di stepper dialog. Jika backend tidak memiliki koneksi GitHub yang ada, opsi "GitHub" akan dinonaktifkan.
  3. Persiapan & Upload: Pilihan ini memicu alur persiapan latar belakang yang sama ("Mengaktifkan API...", "Memeriksa izin...", dan "Menyiapkan bucket..."). Setelah berhasil, tarik atau pilih file arsip Anda menggunakan pengupload, tentukan Direktori root aplikasi, lalu klik Deploy untuk memicu build dan peluncuran.

Men-deploy menggunakan Terraform

Jika memerlukan kontrol yang lebih besar atas proses build dan lingkungan yang di-deploy, Anda dapat men-deploy menggunakan Terraform. Terraform memungkinkan Anda menentukan dan mengelola resource App Hosting menggunakan file konfigurasi deklaratif, dan memberikan kemampuan untuk men-deploy image container bawaan Anda sendiri langsung ke App Hosting, bukan mengandalkan App Hosting untuk membangun dari kode sumber Anda.

Jika Anda baru menggunakan Terraform, lihat Mulai menggunakan Terraform dan Firebase. Jika sudah memahami Terraform, Anda dapat mulai menggunakan file konfigurasi contoh dan resource App Hosting lainnya.

Menyiapkan koneksi GitHub untuk CI/CD

Anda memiliki opsi untuk menghubungkan repositori GitHub kapan saja di tab Deployment pada setelan backend di konsol Firebase. Hal ini memungkinkan Anda men-deploy prototipe aplikasi dari lingkungan lokal, lalu bertransisi ke pipeline CI/CD otomatis saat Anda siap.

Men-deploy menggunakan alat AI

Kami akan menghentikan Firebase Studio pada 22 Maret 2027. Meskipun backend App Hosting Anda tidak terpengaruh, tombol Publikasikan di Firebase Studio akan dihentikan. Untuk terus memublikasikan update tanpa mengubah URL, migrasikan project Anda. Pelajari cara melakukan migrasi.