Kelola konfigurasi proyek dengan manifes Ekstensi

Manifes ekstensi adalah daftar instance ekstensi dan konfigurasinya. Dengan manifes, Anda dapat:

  • Bagikan konfigurasi ekstensi Anda dengan orang lain
  • Salin konfigurasi ekstensi Anda di antara proyek yang berbeda (seperti dari proyek pementasan ke proyek produksi Anda)
  • Terapkan semua ekstensi Anda sekaligus
  • Uji bagaimana ekstensi Anda bekerja dengan aplikasi Anda menggunakan Firebase Local Emulator Suite
  • Komit konfigurasi ekstensi Anda ke kontrol sumber
  • Sertakan ekstensi dalam saluran CI/CD Anda

Manifes ekstensi memiliki dua bagian:

  • Bagian extensions dari firebase.json Anda, yang merupakan peta ID instance ke referensi versi ekstensi. Sebagai contoh:

    {
     "extensions": {
       "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18",
       "my-image-resizer": "firebase/storage-resize-images@^0.1.22",
     }
    }
    
  • file .env yang berisi konfigurasi untuk setiap instance ekstensi Anda, di subdirektori extensions/ dari direktori proyek Firebase Anda. Misalnya, instance dari storage-resize-images mungkin memiliki file .env seperti berikut:

    IMAGE_TYPE=jpeg
    LOCATION=us-central1
    IMG_BUCKET=${param:PROJECT_ID}.appspot.com
    IMG_SIZES=100x100
    DELETE_ORIGINAL_FILE=false

Buat manifes ekstensi

Ada tiga cara untuk membuat manifes ekstensi:

  • Kelola manifes ekstensi Anda dengan Firebase CLI
  • Ekspor konfigurasi ekstensi proyek
  • Edit file manifes secara manual

Dua metode pertama dijelaskan di bawah ini.

Kelola manifes ekstensi Anda dengan Firebase CLI

Anda dapat menjalankan sebagian besar perintah ext: Firebase CLI dengan opsi --local untuk memperbarui manifes ekstensi tanpa benar-benar mengubah konfigurasi proyek saat ini.

Sebagai contoh:

firebase ext:install --local firebase/firestore-bigquery-export

Menjalankan perintah di atas akan meminta Anda untuk mengonfigurasi versi terbaru firebase/firestore-bigquery-export dan menyimpan konfigurasi ke manifes, tetapi tidak akan menerapkan konfigurasi ke proyek Anda.

Berikut adalah beberapa contoh perintah yang mengubah manifes ekstensi:

# ext:configure changes the params for an extension instance in your extensions manifest
$ firebase ext:configure my-bigquery-extension --local

# ext:update --local updates an instance in your extensions manifest
# to the latest version of that extension
$ firebase ext:update my-bigquery-extension --local

# You can also specify a version if you don't want to update to the latest version
$ firebase ext:update my-bigquery-extension firebase/firestore-bigquery-export@0.1.10 --local 

# ext:uninstall --local removes an instance from your extensions manifest
$ firebase ext:uninstall my-bigquery-extension --local

Ekspor konfigurasi ekstensi proyek

Untuk menyimpan konfigurasi ekstensi proyek saat ini ke manifes, lakukan hal berikut:

  1. Jika Anda belum melakukannya, siapkan Firebase CLI
  2. Dari prompt shell, ubah ke direktori proyek. (Direktori proyek Anda berisi file firebase.json ).
  3. Jalankan perintah ext:export :
    firebase ext:export

Perintah ext:export akan menambahkan bagian extensions ke file firebase.json . Selain itu, perintah ext:export membuat direktori extensions yang berisi file .env untuk setiap instance ekstensi yang telah Anda instal. File-file ini berisi parameter konfigurasi untuk setiap instance.

Uji konfigurasi ekstensi dengan Firebase Local Emulator Suite

Setelah Anda menambahkan beberapa instance ekstensi ke manifes ekstensi, Anda dapat mengujinya menggunakan Local Emulator Suite.

  1. Instal dan konfigurasikan Suite Emulator Lokal .

  2. Mulai Rangkaian Emulator Lokal :

    • Untuk menjalankan Emulator Suite secara interaktif, jalankan: firebase emulators:start
    • Untuk menjalankan Emulator Suite dan menjalankan skrip pengujian, jalankan: firebase emulators:exec my-test.sh

Sekarang, jika Anda memiliki instance ekstensi yang tercantum dalam manifes Anda, Local Emulator Suite akan mengunduh kode sumber ekstensi tersebut ke ~/.cache/firebase/extensions . Setelah diunduh, Rangkaian Emulator Lokal akan dimulai dan Anda akan dapat memicu salah satu fungsi yang dipicu latar belakang ekstensi dan menghubungkan aplikasi Anda ke rangkaian Emulator untuk menguji integrasinya dengan aplikasi Anda.

Terapkan konfigurasi ekstensi ke proyek

Setelah Anda menambahkan beberapa instance ekstensi ke manifes ekstensi, Anda dapat menerapkannya ke proyek menggunakan Firebase CLI. Saat Anda menerapkan dengan manifes ekstensi, Anda menginstal, memperbarui, dan mengonfigurasi semua instance ekstensi dalam manifes ke dalam proyek sekaligus.

Untuk menerapkan manifes ekstensi:

  1. Dari prompt shell, ubah ke direktori yang berisi konfigurasi ekstensi yang disimpan. (Ini adalah direktori yang berisi firebase.json . Jika Anda baru saja menjalankan ext:export , Anda sudah berada di direktori yang benar.)
  2. Jalankan perintah deploy . Jika Anda ingin menerapkan ekstensi ke proyek selain yang sekarang, tentukan juga --project= : l10n
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

Perintah deploy akan memvalidasi setiap konfigurasi instance, menanyakan apakah Anda ingin menghapus instance ekstensi apa pun dari proyek tujuan Anda yang tidak terdaftar di firebase.json , lalu men-deploy semua instance ekstensi Anda.

Konfigurasi ekstensi khusus proyek

Konfigurasi ekstensi yang disimpan dapat digunakan untuk diterapkan ke beberapa proyek berbeda: misalnya, proyek pementasan dan proyek produksi. Saat melakukan ini, beberapa nilai parameter mungkin perlu berbeda untuk setiap proyek. File .env khusus proyek memungkinkan ini:

  • Masukkan nilai parameter yang berbeda antar proyek di extensions/ EXTENSION_INSTANCE_ID .env. YOUR_PROJECT_ID
  • Masukkan nilai parameter bersama di extensions/ EXTENSION_INSTANCE_ID .env .

Terkadang, Anda mungkin ingin menggunakan nilai parameter yang berbeda saat mengemulasi ekstensi Anda: misalnya, Anda mungkin ingin memberikan kunci API pengujian, bukan kunci produksi. Letakkan parameter ini di file .local :

  • Masukkan parameter non-rahasia yang ingin Anda gunakan selama emulasi di extensions/ EXTENSION_INSTANCE_ID .env.local
  • Masukkan nilai parameter rahasia di extensions/ EXTENSION_INSTANCE_ID .secret.local