Cara alternatif untuk men-deploy ke App Hosting

Sering kali, sebaiknya gunakan peluncuran otomatis atau peluncuran yang dipicu secara manual dari Firebase console. Namun, Anda mungkin perlu menggunakan alur deployment yang lebih disesuaikan. App Hosting memiliki beberapa opsi untuk deployment kustom.

Men-deploy dari sumber

Dengan men-deploy dari sumber, Anda dapat mengirim 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 dalam 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 dan Penyiapan Infrastruktur yang Diperlukan

Karena Firebase CLI dan Firebase console menggunakan infrastruktur backend yang sama untuk menyimpan dan membangun arsip sumber, 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 Firebase IAM dan izin Firebase App Hosting tertentu.

Izin untuk Orientasi Awal (Deployment pertama ke suatu lokasi)

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

Izin penyiapan prasyarat mencakup:

  • Enable Storage API: serviceusage.services.enable
  • Membuat bucket sumber: storage.buckets.create dan storage.buckets.list
  • Mengonfigurasi Agen Layanan: resourcemanager.projects.setIamPolicy untuk memberi App Hosting akses baca (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 melalui deployment CLI awal atau 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 App Hosting standar (apphosting.builds.create dan apphosting.rollouts.create)

Men-deploy dari sumber dengan Firebase CLI

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

Prasyarat

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

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 App Hosting untuk direktori lokal Anda dan meminta detail konfigurasi:
    • ID backend yang akan di-deploy
    • Region yang akan di-deploy, jika membuat backend baru
    • Jalur ke direktori utama kode aplikasi Anda
    • Runtime Node.js pilihan Anda. Memilih runtime berversi akan mengaktifkan Update Image Dasar Otomatis (ABIU) untuk menerapkan patch keamanan secara otomatis ke lingkungan yang mendasarinya.
  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)

Firebase console menyediakan antarmuka grafis untuk men-deploy aplikasi dengan mengupload arsip sumber yang dikompresi secara langsung. Hal ini berfungsi sebagai alternatif untuk alur koneksi GitHub, jika Anda memilih untuk tidak 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

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

  • .zip
  • .tgz

Format ini ditampilkan secara eksplisit dalam teks deskripsi uploader file.

Langkah-Langkah Deployment

Opsi A: Selama Orientasi Backend Awal
  1. Pilih Sumber: Di wizard pembuatan backend, pilih Upload a zip selama langkah "How do you want to import your app?".
  2. Onboarding Preparation: Mengklik "Next" akan memicu alur persiapan latar belakang, yang secara berurutan mengaktifkan Storage API, memastikan peran yang benar disiapkan, dan melakukan upsert bucket. UI akan menampilkan indikator lingkaran berputar dengan pesan status dinamis: "Enabling API...", "Checking permissions...", dan "Preparing bucket...".
    • Penanganan Error & Guardrail: Jika ada langkah persiapan yang gagal (seperti non-Pemilik yang 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 secara ketat, dan tombol "Next" serta "Finish and Deploy" terakhir tetap dinonaktifkan hingga masalah diselesaikan.
  3. Upload File: Setelah persiapan berhasil diselesaikan, pilih atau tarik file arsip Anda ke komponen uploader file.
  4. Configure Settings: Tentukan App root directory (defaultnya adalah /).

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

Opsi B: Membuat peluncuran Manual
  1. Buka Dialog: Di dasbor App Hosting, klik Create rollout.
  2. Select Source: Pilih Upload a zip di stepper dialog. Jika backend tidak memiliki koneksi GitHub yang ada, opsi "GitHub" akan dinonaktifkan.
  3. Persiapan & Upload: Pemilihan akan memicu alur persiapan latar belakang yang sama ("Mengaktifkan API...", "Checking permissions...", dan "Preparing bucket..."). Setelah berhasil, tarik atau pilih file arsip Anda menggunakan uploader, 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, alih-alih 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 memulai dengan contoh file konfigurasi 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 Firebase console. Dengan begitu, Anda dapat men-deploy prototipe aplikasi dari lingkungan lokal, lalu beralih 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 Publish di Firebase Studio akan dihentikan. Untuk terus memublikasikan update tanpa mengubah URL, migrasikan project Anda. Pelajari cara memigrasikan project.