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

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

  • Udostępnij swoją konfigurację rozszerzeń innym
  • Skopiuj konfigurację rozszerzeń między różnymi projektami (np. z projektu przejściowego do projektu produkcyjnego)
  • Wdrażaj wszystkie rozszerzenia jednocześnie
  • Przetestuj, jak Twoje 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 Twojego firebase.json , która jest odwzorowaniem 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 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ą Firebase CLI
  • Eksportuj konfigurację rozszerzeń projektu
  • Edytuj pliki manifestu ręcznie

Poniżej wyjaśniono dwie pierwsze metody.

Zarządzaj manifestem rozszerzeń za pomocą Firebase CLI

Możesz uruchomić większość poleceń ext: Firebase CLI z opcją --local , aby zaktualizować manifest rozszerzeń bez rzeczywistej 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 innych przykładów poleceń, które modyfikują 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 Firebase CLI
  2. Z zachęty 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 . Ponadto polecenie ext:export tworzy katalog extensions zawierający plik .env dla każdego zainstalowanego wystąpienia rozszerzenia. Te pliki 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ą pakietu Local Emulator Suite.

  1. Zainstaluj i skonfiguruj pakiet Local Emulator Suite .

  2. Uruchom lokalny pakiet emulatorów :

    • Aby interaktywnie uruchomić Emulator Suite, uruchom: firebase emulators:start
    • Aby uruchomić Emulator Suite i wykonać skrypt testowy, uruchom: firebase emulators:exec my-test.sh

Teraz, jeśli masz wymienione w manifeście instancje rozszerzeń, pakiet Local Emulator Suite pobierze kod źródłowy tych rozszerzeń do ~/.cache/firebase/extensions . Po ich pobraniu uruchomi się Local Emulator Suite i będziesz mógł uruchomić dowolne funkcje rozszerzeń wyzwalane w tle oraz połączyć swoją aplikację z pakietem Emulator, 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 przy użyciu interfejsu wiersza polecenia Firebase. Podczas wdrażania z manifestem rozszerzeń instalujesz, aktualizujesz i konfigurujesz wszystkie wystąpienia rozszerzeń w manifeście jednocześnie w projekcie.

Aby wdrożyć manifest rozszerzeń:

  1. Z zachęty 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, podaj również --project= :
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

Polecenie deploy sprawdzi poprawność konfiguracji każdej instancji, zapyta, czy chcesz usunąć z projektu docelowego wszystkie 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 w projekcie przejściowym i projekcie produkcyjnym. 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 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 możesz chcieć użyć innej wartości parametru podczas emulowania swoich rozszerzeń: na przykład możesz podać testowy klucz API zamiast produkcyjnego. Umieść te parametry w pliku .local :

  • Umieść nietajne 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