Manifes ekstensi adalah daftar instance ekstensi dan konfigurasinya. Dengan manifes, Anda dapat:
- Membagikan konfigurasi ekstensi kepada orang lain
- Menyalin konfigurasi ekstensi Anda di antara berbagai project (misalnya, dari project staging ke project produksi)
- Men-deploy semua ekstensi Anda sekaligus
- Menguji cara kerja ekstensi dengan aplikasi menggunakan Firebase Local Emulator Suite
- Melakukan commit konfigurasi ekstensi ke kontrol sumber
- Menyertakan ekstensi di pipeline CI/CD
Manifes ekstensi memiliki dua bagian:
Bagian
extensions
darifirebase.json
Anda, yang merupakan peta ID instance ke referensi versi ekstensi. 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, di subdirektoriextensions/
dari direktori project Firebase Anda. Misalnya, instancestorage-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
Membuat manifes ekstensi
Ada tiga cara untuk mem-build manifes ekstensi:
- Mengelola manifes ekstensi dengan Firebase CLI
- Mengekspor konfigurasi ekstensi project
- Mengedit file manifes secara manual
Dua metode pertama dijelaskan di bawah.
Mengelola manifes ekstensi dengan Firebase CLI
Anda dapat menjalankan sebagian besar perintah ext:
Firebase CLI dengan opsi --local
untuk mengupdate manifes ekstensi tanpa benar-benar mengubah konfigurasi project saat ini.
Contoh:
firebase ext:install --local firebase/firestore-bigquery-export
Jika menjalankan perintah di atas, Anda akan diminta untuk mengonfigurasi versi terbaru dari ekstensi firebase/firestore-bigquery-export
dan menyimpan konfigurasi ke manifes, tetapi ekstensi ini tidak akan men-deploy konfigurasi ke project Anda.
Berikut 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
Mengekspor konfigurasi ekstensi suatu project
Untuk menyimpan konfigurasi ekstensi project saat ini ke manifes, lakukan langkah berikut:
- Jika Anda belum melakukannya, siapkan Firebase CLI
- Dari perintah shell, ubah ke direktori project. (Direktori project Anda berisi file
firebase.json
). - Jalankan perintah
ext:export
:firebase ext:export
Perintah ext:export
akan menambahkan bagian extensions
ke file firebase.json
. Selain itu, perintah ext:export
akan membuat direktori extensions
yang berisi file .env
untuk setiap instance ekstensi yang telah diinstal. File ini berisi parameter konfigurasi untuk setiap instance.
Menguji konfigurasi ekstensi dengan Firebase Local Emulator Suite
Setelah menambahkan beberapa instance ekstensi ke manifes ekstensi, Anda dapat mengujinya menggunakan Local Emulator Suite.
-
- 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
- Untuk menjalankan Emulator Suite secara interaktif, jalankan:
Sekarang, jika Anda memiliki instance ekstensi yang tercantum dalam manifes,
Local Emulator Suite akan mendownload kode sumber ekstensi tersebut ke
~/.cache/firebase/extensions
. Setelah didownload,
Local Emulator Suite akan dimulai dan Anda dapat memicu fungsi yang dipicu
latar belakang ekstensi dan menghubungkan aplikasi ke Emulator
Suite untuk menguji integrasinya dengan aplikasi Anda.
Men-deploy konfigurasi ekstensi ke project
Setelah menambahkan beberapa instance ekstensi ke manifes ekstensi, Anda dapat men-deploy-nya ke suatu project menggunakan Firebase CLI. Saat men-deploy dengan manifes ekstensi, Anda menginstal, mengupdate, dan mengonfigurasi semua instance ekstensi di manifes ke dalam suatu project sekaligus.
Untuk men-deploy manifes ekstensi:
- Dari perintah shell, ubah ke direktori yang berisi konfigurasi ekstensi yang disimpan. (Ini adalah direktori yang berisi
firebase.json
. Jika baru saja menjalankanext:export
, Anda sudah berada di direktori yang tepat.) - Jalankan perintah
deploy
. Jika Anda ingin men-deploy ekstensi ke project selain ekstensi saat ini, tentukan juga--project=
:firebase deploy --only extensions –-project=YOUR_PROJECT_ID
Perintah deploy
akan memvalidasi setiap konfigurasi instance, menanyakan apakah Anda ingin menghapus instance ekstensi dari project tujuan yang tidak tercantum dalam firebase.json
, lalu men-deploy semua instance ekstensi Anda.
Konfigurasi ekstensi khusus project
Konfigurasi ekstensi yang tersimpan dapat digunakan untuk men-deploy ke beberapa project berbeda, misalnya project staging dan project produksi. Saat melakukannya, beberapa parameter value mungkin harus berbeda untuk setiap project.
Anda dapat melakukannya dengan file .env
khusus project:
- Masukkan parameter value yang berbeda di antara project di
extensions/EXTENSION_INSTANCE_ID.env.YOUR_PROJECT_ID
- Masukkan parameter value bersama di
extensions/EXTENSION_INSTANCE_ID.env
.
Terkadang, Anda mungkin ingin menggunakan parameter value yang berbeda saat mengemulasi ekstensi: misalnya, Anda mungkin ingin memberikan kunci API pengujian, bukan kunci API produksi. Masukkan parameter ini dalam file .local
:
- Masukkan parameter non-rahasia yang ingin Anda gunakan selama emulasi di
extensions/EXTENSION_INSTANCE_ID.env.local
- Masukkan parameter value rahasia di
extensions/EXTENSION_INSTANCE_ID.secret.local