Zarządzaj konfiguracjami projektu za pomocą manifestu rozszerzeń

Manifest rozszerzeń to lista instancji rozszerzeń i ich konfiguracji. Za pomocą manifestu możesz:

  • Podziel się konfiguracją rozszerzeń z innymi
  • Skopiuj konfigurację rozszerzeń między różnymi projektami (np. z projektu tymczasowego do projektu produkcyjnego)
  • Wdróż wszystkie rozszerzenia na raz
  • Przetestuj, jak rozszerzenia współpracują z aplikacją, korzystając z pakietu Firebase Local Emulator Suite
  • Zatwierdź konfigurację rozszerzeń w kontroli źródła
  • Uwzględnij rozszerzenia w potoku CI/CD

Manifest rozszerzeń składa się z dwóch części:

  • Sekcja extensions pliku firebase.json , która jest mapą identyfikatora instancji na odniesienie do wersji rozszerzenia. Na przykład:

    {
     "extensions": {
       "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18",
       "my-image-resizer": "firebase/storage-resize-images@^0.1.22",
     }
    }
    
  • Pliki .env zawierające konfigurację każdej instancji rozszerzenia w podkatalogu extensions/ katalogu projektu Firebase. Na przykład instancja storage-resize-images może mieć plik .env podobny do następującego:

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

Utwórz manifest rozszerzeń

Istnieją trzy sposoby tworzenia manifestu rozszerzeń:

  • Zarządzaj manifestem rozszerzeń za pomocą interfejsu CLI Firebase
  • Eksportuj konfigurację rozszerzeń projektu
  • Edytuj pliki manifestu ręcznie

Pierwsze dwie metody opisano poniżej.

Zarządzaj manifestem rozszerzeń za pomocą interfejsu CLI Firebase

Większość poleceń ext: interfejsu Firebase CLI można uruchomić z opcją --local , aby zaktualizować manifest rozszerzeń bez faktycznej zmiany bieżącej konfiguracji projektu.

Na przykład:

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

Uruchomienie powyższego polecenia wyświetli monit o skonfigurowanie najnowszej wersji rozszerzenia firebase/firestore-bigquery-export i zapisanie konfiguracji w manifeście, ale nie spowoduje to wdrożenia konfiguracji w twoim projekcie.

Oto kilka przykładów poleceń modyfikujących manifest rozszerzeń:

# 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

Eksportuj konfigurację rozszerzeń projektu

Aby zapisać bieżącą konfigurację rozszerzeń projektu w manifeście, wykonaj następujące czynności:

  1. Jeśli jeszcze tego nie zrobiłeś, skonfiguruj interfejs wiersza polecenia Firebase
  2. W wierszu poleceń powłoki przejdź do katalogu projektu. (Twój katalog projektu zawiera plik firebase.json ).
  3. Uruchom polecenie ext:export :
    firebase ext:export

Polecenie ext:export doda sekcję extensions do pliku firebase.json . Dodatkowo polecenie ext:export tworzy katalog extensions zawierający plik .env dla każdej zainstalowanej instancji rozszerzenia. Pliki te zawierają parametry konfiguracyjne dla każdej instancji.

Przetestuj konfigurację rozszerzeń za pomocą pakietu Firebase Local Emulator Suite

Po dodaniu wystąpień rozszerzeń do manifestu rozszerzeń możesz je przetestować za pomocą pakietu Local Emulator Suite.

  1. Zainstaluj i skonfiguruj pakiet emulatorów lokalnych .

  2. Uruchom pakiet lokalnych emulatorów :

    • Aby interaktywnie uruchomić pakiet emulatorów, uruchom: firebase emulators:start
    • Aby uruchomić pakiet emulatorów i wykonać skrypt testowy, uruchom: firebase emulators:exec my-test.sh

Teraz, jeśli masz instancje rozszerzeń wymienione w swoim manifeście, Local Emulator Suite pobierze kod źródłowy tych rozszerzeń do ~/.cache/firebase/extensions . Po pobraniu zostanie uruchomiony pakiet lokalnych emulatorów, w którym będzie można uruchomić dowolne funkcje rozszerzeń uruchamiane w tle i połączyć aplikację z pakietem emulatorów, aby przetestować ich integrację z aplikacją.

Wdróż konfigurację rozszerzeń w projekcie

Po dodaniu kilku wystąpień rozszerzeń do manifestu rozszerzenia możesz wdrożyć je w projekcie za pomocą interfejsu wiersza polecenia Firebase. Podczas wdrażania z manifestem rozszerzeń instalujesz, aktualizujesz i konfigurujesz wszystkie wystąpienia rozszerzeń w manifeście w projekcie jednocześnie.

Aby wdrożyć manifest rozszerzeń:

  1. W wierszu poleceń powłoki przejdź do katalogu zawierającego zapisaną konfigurację rozszerzeń. (To jest katalog zawierający firebase.json . Jeśli właśnie uruchomiłeś ext:export , jesteś już we właściwym katalogu.)
  2. Uruchom polecenie deploy . Jeśli chcesz wdrożyć rozszerzenia w projekcie innym niż bieżący, określ także --project= :
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

Komenda deploy sprawdzi poprawność konfiguracji każdej instancji, zapyta, czy chcesz usunąć z projektu docelowego jakiekolwiek instancje rozszerzeń, których nie ma na liście w firebase.json , a następnie wdroży wszystkie instancje rozszerzeń.

Konfiguracje rozszerzeń specyficzne dla projektu

Zapisane konfiguracje rozszerzeń można wykorzystać do wdrożenia w wielu różnych projektach: na przykład projekcie przejściowym i projekcie produkcyjnym. W takim przypadku wartości niektórych parametrów mogą być inne dla każdego projektu. Umożliwiają to pliki .env specyficzne dla projektu:

  • Umieść wartości parametrów różniące się między projektami w extensions/ EXTENSION_INSTANCE_ID .env. YOUR_PROJECT_ID
  • Umieść wartości parametrów współdzielonych w extensions/ EXTENSION_INSTANCE_ID .env .

Czasami podczas emulacji rozszerzeń możesz chcieć użyć innej wartości parametru: na przykład możesz chcieć podać testowy klucz API zamiast produkcyjnego. Umieść te parametry w pliku .local :

  • Umieść niejawne parametry, których chcesz używać podczas emulacji, w extensions/ EXTENSION_INSTANCE_ID .env.local
  • Umieść tajne wartości parametrów w extensions/ EXTENSION_INSTANCE_ID .secret.local