Zarządzanie konfiguracjami projektów za pomocą pliku manifestu rozszerzeń

Plik manifestu rozszerzeń to lista instancji rozszerzeń wraz z ich listą. konfiguracji. Za pomocą pliku manifestu możesz:

  • Udostępnianie konfiguracji rozszerzeń innym osobom
  • Kopiuj konfigurację rozszerzeń między różnymi projektami (na przykład z projektu przejściowego do projektu produkcyjnego).
  • Wdrażanie wszystkich rozszerzeń jednocześnie
  • Przetestuj, jak rozszerzenia współdziałają z aplikacją za pomocą: Firebase Local Emulator Suite
  • Przekazywanie konfiguracji rozszerzeń do kontroli źródła
  • Uwzględnij rozszerzenia w potoku CI/CD

Plik manifestu rozszerzeń składa się z 2 części:

  • Sekcja extensions obiektu firebase.json, który jest mapą instancji Identyfikator z odniesieniem do wersji rozszerzenia. Przykład:

    {
     "extensions": {
       "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18",
       "my-image-resizer": "firebase/storage-resize-images@^0.1.22",
     }
    }
    
  • .env plików zawierających konfigurację poszczególnych rozszerzeń wystąpieniach w podkatalogu extensions/ projektu Firebase. katalogu. Na przykład storage-resize-images może mieć .env podobny do tego:

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

Utwórz plik manifestu rozszerzeń

Plik manifestu rozszerzeń możesz utworzyć na 3 sposoby:

  • Zarządzanie plikiem manifestu rozszerzeń za pomocą interfejsu wiersza poleceń Firebase
  • Eksportowanie konfiguracji rozszerzeń projektu
  • Ręczne edytowanie plików manifestu

Pierwsze dwie metody przedstawiamy poniżej.

Zarządzanie plikiem manifestu rozszerzeń za pomocą interfejsu wiersza poleceń Firebase

Większość poleceń ext: interfejsu wiersza poleceń Firebase można uruchamiać za pomocą opcji --local , aby zaktualizować plik manifestu rozszerzeń bez zmiany bieżącej konfiguracji.

Przykład:

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

Uruchomienie powyższego polecenia spowoduje skonfigurowanie najnowszej wersji firebase/firestore-bigquery-export rozszerzenie i zapisz konfigurację w pliku manifestu, ale nie wdroży on konfiguracji w projekcie.

Oto kilka dodatkowych przykładów poleceń, które modyfikują plik manifestu 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

Eksportowanie konfiguracji rozszerzeń projektu

Aby zapisać w pliku manifestu bieżącą konfigurację rozszerzeń projektu, wykonaj :

  1. Skonfiguruj interfejs wiersza poleceń Firebase, jeśli jeszcze go nie masz.
  2. Z poziomu promptu powłoki przejdź do katalogu projektu. (Twój projekt w katalogu jest plik firebase.json).
  3. Uruchom polecenie ext:export:
    firebase ext:export

Polecenie ext:export spowoduje dodanie sekcji extensions do pliku firebase.json . Dodatkowo polecenie ext:export tworzy katalog extensions zawierający plik .env dla każdej zainstalowanej instancji rozszerzenia. Te zawierają parametry konfiguracji każdej instancji.

Testowanie konfiguracji rozszerzeń za pomocą interfejsu Firebase Local Emulator Suite

Po dodaniu instancji rozszerzeń do pliku manifestu możesz mieć możliwość przetestuj je za pomocą narzędzia Local Emulator Suite.

  1. Zainstaluj i skonfiguruj Local Emulator Suite.

  2. Uruchom Local Emulator Suite:

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

Jeśli w pliku manifestu masz podane instancje rozszerzeń, Local Emulator Suite pobierze kod źródłowy tych rozszerzeń do ~/.cache/firebase/extensions Po ich pobraniu Local Emulator Suite uruchomi się i będzie można aktywować funkcji wywoływanych w tle i połącz aplikację z emulatorem aby przetestować integrację z aplikacją.

.

Wdrażanie konfiguracji rozszerzeń w projekcie

Po dodaniu instancji rozszerzeń do pliku manifestu rozszerzenia możesz: wdrożyć je w projekcie za pomocą interfejsu wiersza poleceń Firebase. Podczas wdrażania za pomocą pliku manifestu, instalujesz, aktualizujesz i konfigurujesz wszystkie rozszerzenia z pliku manifestu do projektu.

Aby wdrożyć plik manifestu rozszerzeń:

  1. Z poziomu promptu powłoki przejdź do katalogu zawierającego zapisane konfigurację rozszerzeń. (Jest to katalog, który zawiera firebase.json Jeśli właśnie biegałeś ext:export, jesteś już we właściwym miejscu ).
  2. Uruchom polecenie deploy. Jeśli chcesz wdrożyć rozszerzenia w projekcie innego niż bieżący, określ też --project=:
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

Polecenie deploy sprawdzi każdą konfigurację instancji i zapyta, czy usuń z projektu docelowego wszystkie instancje rozszerzeń, które nie są w tabeli firebase.json, a następnie wdróż wszystkie instancje rozszerzeń.

Konfiguracje rozszerzeń związane z projektem

Zapisanych konfiguracji rozszerzeń można używać do wdrażania w wielu różnych projektów: na przykład projektu testowego i produkcyjnego. Podczas wykonywania dlatego niektóre wartości parametrów mogą być różne w każdym projekcie. Dzięki plikom .env dotyczącym konkretnego projektu jest to możliwe:

  • Umieść w extensions/EXTENSION_INSTANCE_ID.env.YOUR_PROJECT_ID wartości parametrów, które różnią się między projektami
  • Umieść wartości udostępnianych parametrów w polu extensions/EXTENSION_INSTANCE_ID.env.

Czasami przy emulowaniu parametru rozszerzeń: można na przykład podać testowy klucz interfejsu API zamiast produkcji. Umieść te parametry w pliku .local:

  • Umieść parametry niebędące obiektami tajnymi, których chcesz używać podczas emulacji, w: extensions/EXTENSION_INSTANCE_ID.env.local
  • Umieść wartości parametrów obiektu tajnego w extensions/EXTENSION_INSTANCE_ID.secret.local