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

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

  • Udostępnianie konfiguracji rozszerzeń innym osobom
  • Skopiuj konfigurację rozszerzeń między różnymi projektami (na przykład z projektu testowego do projektu produkcyjnego)
  • Wdrażanie wszystkich rozszerzeń jednocześnie
  • Sprawdź, jak rozszerzenia współpracują z Twoją aplikacją, korzystając z Pakietu emulatorów lokalnych Firebase.
  • 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 identyfikatora firebase.json, która jest mapą identyfikatora instancji na odniesienie 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, które zawierają konfigurację poszczególnych instancji rozszerzeń, w podkatalogu extensions/ katalogu projektu Firebase. storage-resize-images może na przykład mieć plik .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 omówiono poniżej.

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

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

Przykład:

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

Po uruchomieniu powyższego polecenia wyświetli się prośba o skonfigurowanie najnowszej wersji rozszerzenia firebase/firestore-bigquery-export i zapisanie konfiguracji w pliku manifestu, ale nie wdrożysz 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 te czynności:

  1. Skonfiguruj interfejs wiersza poleceń Firebase, jeśli jeszcze go nie masz.
  2. Z poziomu promptu powłoki przejdź do katalogu projektu. (Katalog projektu zawiera 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. Pliki te zawierają parametry konfiguracji każdej instancji.

Testowanie konfiguracji rozszerzeń w Pakiecie emulatorów lokalnych Firebase

Po dodaniu instancji rozszerzeń do pliku manifestu możesz je przetestować za pomocą Pakietu emulatorów lokalnych.

  1. Zainstaluj i skonfiguruj Pakiet emulatorów lokalnych.

  2. Uruchom Pakiet emulatorów lokalnych

    • 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 są wymienione instancje rozszerzeń, Pakiet emulatorów lokalnych pobierze ich kod źródłowy do ~/.cache/firebase/extensions. Po ich pobraniu uruchomi się Pakiet emulatorów lokalnych. Pozwoli Ci to aktywować dowolne z tych funkcji w tle oraz połączyć aplikację z pakietem emulatorów, aby przetestować ich integrację z aplikacją.

Wdrażanie konfiguracji rozszerzeń w projekcie

Po dodaniu instancji rozszerzenia do pliku manifestu możesz wdrożyć je w projekcie za pomocą interfejsu wiersza poleceń Firebase. Podczas wdrażania przy użyciu pliku manifestu rozszerzeń musisz jednocześnie zainstalować, zaktualizować i skonfigurować w projekcie wszystkie instancje rozszerzeń z pliku manifestu.

Aby wdrożyć plik manifestu rozszerzeń:

  1. Z poziomu promptu powłoki przejdź do katalogu zawierającego zapisaną konfigurację rozszerzeń. (W tym katalogu znajduje się firebase.json. Jeśli uruchomiłeś przed chwilą 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, wpisz też --project=:
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

Polecenie deploy sprawdzi każdą konfigurację instancji. Zapyta Cię, czy z projektu docelowego chcesz usunąć instancje rozszerzeń, których nie ma na liście w firebase.json, a potem wdrożysz wszystkie instancje rozszerzeń.

Konfiguracje rozszerzeń związane z projektem

Zapisanych konfiguracji rozszerzeń można używać do wdrażania w wielu różnych projektach, na przykład w projekcie przejściowym i projekcie produkcyjnym. W takim przypadku 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 podczas emulacji rozszerzeń konieczne może być użycie innej wartości parametru, np. zamiast klucza produkcyjnego możesz podać testowy klucz interfejsu API. Umieść te parametry w pliku .local:

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