Men-deploy beberapa lingkungan dari codebase

Sangat umum untuk memiliki beberapa lingkungan yang di-deploy dari codebase yang sama, masing-masing dengan konfigurasi yang sedikit berbeda. Misalnya, Anda mungkin ingin menetapkan lebih sedikit CPU dan RAM ke lingkungan staging, atau memastikan lingkungan produksi membuat setidaknya 1 instance tetap aktif dan siap menyalurkan permintaan. Anda mungkin juga ingin menentukan variabel lingkungan dan secret yang berbeda, bergantung pada lingkungan dan resource yang ingin Anda gunakan.

Panduan ini menjelaskan cara men-deploy lingkungan produksi dan staging, masing-masing ke project Firebase yang terpisah. Dengan mengikuti prinsip yang sama, Anda dapat men-deploy ke berbagai jenis lingkungan lainnya. Untuk mempelajari lingkungan lebih lanjut, lihat Ringkasan lingkungan dan Praktik terbaik umum untuk menyiapkan project Firebase.

Prasyarat

  • Kode aplikasi Anda sudah disimpan di GitHub.
  • Anda telah membuat project yang berbeda untuk setiap lingkungan—misalnya my-production-firebase-project dan my-staging-firebase-project. Pastikan untuk memberi tag pada project Firebase produksi Anda dengan jenis lingkungan "produksi".
  • Di setiap project, Anda telah membuat backend App Hosting, dengan cabang langsung yang ditetapkan ke cabang GitHub yang ingin di-deploy (seperti main). Lihat Mulai menggunakan App Hosting untuk informasi selengkapnya.

Langkah 0: Buat konfigurasi default di apphosting.yaml

App Hosting mendukung file konfigurasi yang disebut apphosting.yaml untuk mengelola setelan runtime (CPU, konkurensi, batas memori, dll.) dan variabel lingkungan untuk aplikasi Anda. File ini juga mendukung referensi ke secret yang dikelola dengan Cloud Secret Manager, sehingga aman untuk diperiksa ke dalam kontrol sumber. Untuk informasi selengkapnya, lihat Mengonfigurasi backend.

Untuk memulai, buat file apphosting.yaml di direktori utama aplikasi Anda. Ini adalah file konfigurasi penggantian yang digunakan saat file konfigurasi khusus lingkungan tidak ditemukan. Nilai yang disimpan di apphosting.yaml harus berupa default yang aman digunakan untuk semua lingkungan.

Bagian berikutnya menjelaskan cara mengganti nilai default di apphosting.yaml untuk lingkungan tertentu. Contoh alur ini membuat lingkungan staging.

Langkah 1: Tetapkan Nama lingkungan

Setiap backend App Hosting memiliki setelan Nama lingkungan. Kolom ini digunakan untuk memetakan backend Anda ke file konfigurasi khusus lingkungan, dan dapat diubah kapan saja. Anda hanya dapat menetapkan satu nama lingkungan per backend.

Untuk menetapkan nama lingkungan backend,

  1. Di Firebase console, pilih project staging Anda (dalam contoh ini, my-staging-firebase-project).
  2. Pilih App Hosting dari navigasi sebelah kiri.
  3. Klik Lihat dasbor di backend yang Anda pilih.
  4. Di tab Settings, pilih Deployment.
  5. Di bagian Nama lingkungan,masukkan nama lingkungan Anda. Anda dapat memberi nama lingkungan sesuai keinginan. Dalam contoh ini, nilainya adalah staging.
  6. Klik Save.

Saat peluncuran App Hosting dipicu untuk backend Anda (baik pada push git maupun secara manual melalui konsol), App Hosting akan memeriksa file apphosting.ENVIRONMENT_NAME.yaml sebelum kembali ke apphosting.yaml.

Langkah 2: Buat file apphosting.yaml khusus lingkungan

Untuk konfigurasi khusus lingkungan, buat file dengan nama apphosting.ENVIRONMENT_NAME.yaml guna menentukan penggantian khusus lingkungan. File ini memiliki format yang sama dengan apphosting.yaml default dan harus berada di direktori root aplikasi Anda bersama apphosting.yaml.

Pada waktu build, App Hosting menggabungkan kedua file ini, dengan prioritas yang diberikan ke nilai dalam file YAML khusus lingkungan daripada file apphosting.yaml dasar.

Dalam contoh ini, Anda akan membuat file bernama apphosting.staging.yaml di direktori utama aplikasi:


runConfig:
  cpu: 1
  memoryMiB: 512
  concurrency: 5

env:
  -   variable: API_URL
    value: api.staging.service.com
    availability:
      -   BUILD

  -   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

Misalkan Anda sudah memiliki apphosting.yaml yang terlihat seperti:

runConfig:
  cpu: 3
  memoryMiB: 1024
  maxInstances: 4
  minInstances: 0
  concurrency: 100

env:
  -   variable: API_URL
    value: api.service.com
    availability:
      -   BUILD
      -   RUNTIME

  -   variable: STORAGE_BUCKET
    value: mybucket.appspot.com
    availability:
      -   RUNTIME

  -   variable: API_KEY
    secret: secretIDforAPI

Output gabungan akhir, yang dapat Anda periksa di log Cloud Build, akan terlihat seperti ini:

runConfig:
  cpu: 1
  memoryMiB: 512
  maxInstances: 4
  minInstances: 0
  concurrency: 5

env:
  -   variable: API_URL
    value: api.staging.service.com
    availability:
      -   BUILD

  -   variable: STORAGE_BUCKET
    value: mybucket.appspot.com
    availability:
      -   RUNTIME

  -   variable: API_KEY
    secret: secretIDforAPI

  -   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

Perlu diperhatikan bahwa nilai runConfig tertentu seperti CPU telah ditimpa, serta variabel lingkungan apa pun yang tumpang-tindih.

Langkah 3: Deploy codebase Anda

Setelah selesai mengedit file apphosting.ENVIRONMENT_NAME.yaml khusus lingkungan, kirim file Anda ke GitHub:

$ git add apphosting.<ENVIRONMENT_NAME>.yaml
$ git commit -m "Added environment specific yaml file"
$ git push

Setiap backend yang diberi tag dengan nama lingkungan ini akan menggunakan nilai penggantian spesifik yang telah Anda tentukan dalam file YAML terkait, dan kembali ke apphosting.yaml jika nilai tidak ditemukan. Untuk backend tanpa nama lingkungan terkait, Anda dapat terus menggunakan apphosting.yaml.

Langkah berikutnya