Zarządzaj konfiguracjami projektów za pomocą manifestu rozszerzeń

Manifest rozszerzeń to lista wystąpień rozszerzeń i ich konfiguracji. Dzięki manifestowi możesz:

  • Udostępnij swoją konfigurację rozszerzeń innym
  • Skopiuj konfigurację rozszerzeń między różnymi projektami (na przykład z projektu pomostowego do projektu produkcyjnego)
  • Wdróż wszystkie swoje rozszerzenia jednocześnie
  • Sprawdź, jak rozszerzenia współpracują z Twoją aplikacją, korzystając z pakietu Firebase Local Emulator Suite
  • Zatwierdź konfigurację rozszerzeń do kontroli źródła
  • Uwzględnij rozszerzenia w potoku CI/CD

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

  • Sekcja extensions 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ę dla każdej instancji rozszerzenia w podkatalogu extensions/ katalogu projektu Firebase. Na przykład wystąpienie obrazów 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 Firebase CLI
  • Eksportuj konfigurację rozszerzeń projektu
  • Edytuj pliki manifestu ręcznie

Pierwsze dwie metody wyjaśniono poniżej.

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

Możesz uruchomić większość poleceń Firebase CLI ext: 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 spowoduje wyświetlenie monitu o skonfigurowanie najnowszej wersji rozszerzenia firebase/firestore-bigquery-export i zapisanie konfiguracji w manifeście, ale konfiguracja nie zostanie wdrożona w 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. Z wiersza poleceń 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 . Ponadto polecenie ext:export tworzy katalog extensions zawierający plik .env dla każdego zainstalowanego wystąpienia rozszerzenia. Pliki te zawierają parametry konfiguracyjne dla każdej instancji.

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

Po dodaniu niektórych wystąpień rozszerzeń do manifestu rozszerzeń możesz je przetestować za pomocą lokalnego pakietu emulatorów.

  1. Zainstaluj i skonfiguruj lokalny pakiet emulatorów .

  2. Uruchom lokalny pakiet 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 ich pobraniu uruchomi się lokalny pakiet emulatorów i będziesz mógł wyzwolić dowolne funkcje wyzwalane w tle rozszerzeń i połączyć swoją aplikację z pakietem emulatorów, aby przetestować ich integrację z twoją aplikacją.

Wdróż konfigurację rozszerzeń w projekcie

Po dodaniu niektórych wystąpień rozszerzeń do manifestu rozszerzenia możesz wdrożyć je w projekcie za pomocą interfejsu wiersza polecenia Firebase. Podczas wdrażania za pomocą manifestu 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ń przejdź do katalogu zawierającego zapisaną konfigurację rozszerzeń. (Jest to 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 również --project= :
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

Polecenie deploy zweryfikuje konfigurację każdej instancji, zapyta, czy chcesz usunąć z projektu docelowego jakiekolwiek instancje rozszerzeń, które nie są wymienione w firebase.json , a następnie wdroży wszystkie instancje rozszerzeń.

Konfiguracje rozszerzeń specyficzne dla projektu

Zapisane konfiguracje rozszerzeń mogą służyć do wdrażania w wielu różnych projektach: na przykład projekt pomostowy i projekt produkcyjny. W takim przypadku niektóre wartości parametrów mogą wymagać różnych wartości dla każdego projektu. Umożliwiają to pliki .env specyficzne dla projektu:

  • Umieść wartości parametrów, które różnią 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 możesz chcieć użyć innej wartości parametru podczas emulacji rozszerzeń: na przykład możesz chcieć podać testowy klucz API zamiast produkcyjnego. Umieść te parametry w pliku .local :

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