Plik extension.yaml – informacje poglądowe

Plik specyfikacji rozszerzenia (extension.yaml) zawiera metadane rozszerzenia, deklaruje zasoby utworzone przez rozszerzenie oraz interfejsy API i dostęp wymagane przez rozszerzenie, a także definiuje wszelkie parametry konfigurowane przez użytkownika, które są udostępniane przez rozszerzenie.

Tabele na tej stronie zawierają opis pól dostępnych w extension.yamlpliku.

Podstawowe informacje i dane identyfikacyjne

name: your-extension-name
version: 1.0.0         # Semantic versioning (semver)
specVersion: v1beta    # Always "v1beta"
license: Apache-2.0    # Always "Apache-2.0" (required to publish on extensions.dev)
billingRequired: true  # Always "true"

displayName: Your extension name
description: >-
  Description of the extension. (One or two
  sentences.)
icon: icon.png
tags: [tag, anothertag]

sourceUrl: https://github.com/your-org/your-repo   # GitHub repo URL
releaseNotesUrl: https://github.com/your-org/your-repo/blob/main/CHANGELOG.md

author:
  authorName: Your Company
  email: extensions@example.com
  url: https://example.com/
contributors:
  - authorName: Your Name
  - authorName: Another Contributor
    email: colleague@example.net
    url: https://github.com/their-org/
Pola podstawowe
name
ciąg znaków
(wymagany)

Identyfikator rozszerzenia.

Może zawierać tylko małe litery, cyfry i łączniki; limit 40 znaków.

Uwaga: ta wartość jest używana do generowania identyfikatora instancji rozszerzenia (który jest następnie używany do generowania nazw konta usługi rozszerzenia i zasobów specyficznych dla rozszerzenia).

version
ciąg znaków
(wymagany)

Wersja rozszerzenia.

Musi być zgodna z wersją semantyczną (np. 1.2.0).

specVersion
ciąg znaków
(wymagany)

Wersja specyfikacji Rozszerzeń w Firebase.

Bieżąca wartość: v1beta

license
ciąg znaków
(opcjonalnie)

Licencja na rozszerzenie.

Rozszerzenie musi być licencjonowane za pomocą Apache-2.0.

billingRequired
wartość logiczna
(opcjonalnie)

Określa, czy usługi używane przez rozszerzenie wymagają konta rozliczeniowego Firebase w wersji płatnej.

Zawsze ustawiona na true.

displayName
ciąg znaków
(opcjonalnie)

Przyjazna wyświetlana nazwa rozszerzenia (3–5 słów).

Limit znaków: 40.

description
ciąg znaków
(opcjonalnie)
Krótki opis zadania wykonywanego przez rozszerzenie (ok. 1 zdanie).
icon
ciąg znaków
(opcjonalnie)

Plik, który będzie używany jako ikona rozszerzenia w extensions.dev i w konsoli Firebase.

Ten plik musi być kwadratowym plikiem PNG o rozmiarach od 512 × 512 do 1024 × 1024 pikseli. Umieść plik w tym samym katalogu co extension.yaml. Nie możesz określić podkatalogu.

Podczas projektowania ikony rozszerzenia pamiętaj o tych wytycznych:

  • Wybierz kolory tła i grafiki, które pasują do Twojej marki.
  • Używaj prostych kolorów ikon, stosując tylko 2 kolory. Wiele kolorów może sprawić, że ikona będzie zbyt przytłaczająca wizualnie.
  • Z tego samego powodu nie używaj gradientów w ikonie. Gradienty są trudne do odróżnienia w przypadku małych rozmiarów i sprawiają, że ikona jest wizualnie złożona.
  • Używaj prostych, unikalnych obrazów, które pokazują funkcje rozszerzenia.
  • Jeśli Twoja firma tworzy wiele rozszerzeń, nie używaj logo jako ikony. Użytkownicy będą mieli trudności z odróżnieniem Twoich rozszerzeń.
  • Spraw, aby grafika była wyrazista i odważna. Nie używaj delikatnych ani skomplikowanych grafik, które nie będą dobrze wyglądać w mniejszych rozmiarach.
  • Nie używaj słów, które wyjaśniają, do czego służy rozszerzenie. Tekst jest często nieczytelny przy mniejszych rozmiarach.
tags
lista ciągów znaków
(opcjonalnie)
Tagi, które pomogą użytkownikom odkryć Twoje rozszerzenie. Te tagi są powiązane z kategoriami w Centrum rozszerzeń: marketing, messaging, payments, search, shipping, social, utilities, ai
sourceUrl
ciąg znaków
(opcjonalnie)
Publiczny adres URL, pod którym można uzyskać dostęp do katalogu rozszerzeń.
releaseNotesUrl
ciąg znaków
(opcjonalnie)
Publiczny adres URL, pod którym można uzyskać dostęp do informacji o wersji rozszerzenia.
author
jeden obiekt autora
(opcjonalny)

Główny autor i osoba kontaktowa w sprawie rozszerzenia.

author:
  authorName: Your Company
  email: extensions@example.com
  url: https://example.com/
Pola autora
authorName
ciąg znaków
(wymagany)

Imię i nazwisko autora.

Może to być osoba, firma, organizacja itp.

email
string
(opcjonalnie)
Adres e-mail autora.
url
string
(opcjonalnie)
Publiczny adres URL, pod którym można uzyskać informacje o autorze.
contributors
lista obiektów autora
(opcjonalnie)

Wszyscy dodatkowi współautorzy rozszerzenia.

contributors:
  - authorName: Your Name
  - authorName: Another Contributor
    email: colleague@example.net
    url: https://github.com/their-org/
Pola autora
authorName
ciąg znaków
(wymagany)

Imię i nazwisko autora.

Może to być osoba, firma, organizacja itp.

email
string
(opcjonalnie)
Adres e-mail autora.
url
string
(opcjonalnie)
Publiczny adres URL, pod którym można uzyskać informacje o autorze.

Interfejsy API Firebase i Google Cloud

Te pola określają interfejsy API Firebase i Google, których używa rozszerzenie. Gdy użytkownicy zainstalują rozszerzenie, mogą automatycznie włączyć te interfejsy API w swoim projekcie.

apis:
  - apiName: apiname.googleapis.com
    reason: Explanation of why the extension uses this API
  - apiName: anotherapiname.googleapis.com
    reason: Explanation of why the extension uses this API
Pola interfejsu API
apiName
ciąg znaków
(wymagany)

Nazwa interfejsu API Google

Musi odpowiadać polu Nazwa usługi na stronie przeglądu każdego interfejsu API (przykład) w bibliotece interfejsów API Google Cloud.

reason
ciąg znaków
(wymagany)
Krótki opis, dlaczego rozszerzenie musi korzystać z tego interfejsu API

Role uprawnień

Te pola określają role Cloud IAM wymagane przez rozszerzenie. Do konta usługi utworzonego na potrzeby rozszerzenia zostaną przypisane te role.

Możesz określić tylko jedną z obsługiwanych ról.

roles:
  - role: product.role
    reason: Explanation of why the extension needs this level of access
  - role: anotherproduct.role
    resource: projects/${project_id}/resource_type/*
    reason: Explanation of why the extension needs this level of access
Pola roli
role
ciąg znaków
(wymagany)

Nazwa roli uprawnień wymaganej do działania rozszerzenia

Musi być jedną z obsługiwanych ról.

reason
ciąg znaków
(wymagany)
Krótki opis, dlaczego rozszerzenie potrzebuje dostępu przyznanego przez tę rolę
resource
ciąg znaków
(opcjonalnie)

Ogranicz zakres roli do tego zasobu.

Jeśli go pominiesz, domyślnie zostanie użyta wartość projects/${project_id}. Zobacz Ograniczanie zakresu ról.

Usługi zewnętrzne

Te pola określają usługi inne niż Firebase i Google, z których korzysta rozszerzenie (zwykle interfejsy API REST). Platforma rozszerzeń Firebase nie udostępnia żadnych sposobów automatycznego włączania tych usług ani przeprowadzania autoryzacji.

externalServices:
  - name: Example API
    pricingUri: https://developers.example.com/pricing
  - name: Another Example API
    pricingUri: https://developers.example.com/pricing
Pola usług zewnętrznych
name
ciąg znaków
(wymagany)
Nazwa usługi zewnętrznej wymaganej do działania rozszerzenia
pricingUri
ciąg znaków
(wymagany)
Identyfikator URI informacji o cenach usługi

Parametry konfigurowane przez użytkownika

Te pola określają parametry, które rozszerzenie udostępnia użytkownikom do skonfigurowania.

params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      What do you want to set PARAM_ID to?
      This is a longer description of the parameter, often phrased as a prompt
      to the user.
  - param: ANOTHER_PARAM_ID
    label: Short description of the parameter
    description: >
      What do you want to set ANOTHER_PARAM_ID to?
      This is a longer description of the parameter.
    example: example-input
    validationRegex: "^[a-zA-Z][a-zA-Z-]*[a-zA-Z]?$"
    validationErrorMessage:
      Must be a hyphen-delimited string of alphabetic characters
    default: default-value
    required: false
    immutable: true
Pola parametru
param
ciąg znaków
(wymagany)
Nazwa parametru. Używasz tej nazwy, aby odwoływać się do wartości parametru w kodzie.
label
ciąg znaków
(wymagany)
Krótki opis parametru. Wyświetlany użytkownikowi, gdy jest on proszony o podanie wartości parametru.
description
ciąg znaków
(opcjonalnie)

Szczegółowy opis parametru. Wyświetlany użytkownikowi, gdy jest on proszony o podanie wartości parametru.

Obsługuje Markdown.

example
ciąg znaków
(opcjonalnie)
Przykładowa wartość parametru.
default
ciąg znaków
(opcjonalnie)
Wartość domyślna parametru, jeśli użytkownik pozostawi wartość parametru pustą.
validationRegex
ciąg znaków
(opcjonalnie)
Wyrażenie regularne do weryfikacji wartości parametru skonfigurowanej przez użytkownika. Składnia Google RE2
validationErrorMessage
ciąg znaków
(opcjonalnie)
Komunikat o błędzie, który ma się wyświetlać, jeśli weryfikacja wyrażenia regularnego się nie powiedzie.
required
wartość logiczna
(opcjonalnie)
Określa, czy użytkownik może przesłać pusty ciąg znaków, gdy zostanie poproszony o podanie wartości parametru. Domyślna wartość to true.
immutable
wartość logiczna
(opcjonalnie)

Określa, czy użytkownik może zmienić wartość parametru po instalacji (np. jeśli ponownie skonfiguruje rozszerzenie). Domyślna wartość to false.

Uwaga: jeśli zdefiniujesz parametr „location” dla wdrożonych funkcji rozszerzenia, ustaw to pole na true.

type
ciąg znaków
(opcjonalnie)
Typ parametru. Specjalne typy parametrów mogą mieć dodatkowe wymagania lub inną prezentację w interfejsie. Zapoznaj się z sekcjami poniżej.

Parametry, które można wybrać pojedynczo lub wielokrotnie

Parametry, które można wybrać pojedynczo lub wielokrotnie, proszą użytkowników o wybranie opcji z listy wstępnie zdefiniowanych opcji.

params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      Do you want to enable the option?
    type: select
    options:
      - label: Yes
        value: true
      - label: No
        value: false
  - param: ANOTHER_PARAM_ID
    label: Short description of the parameter
    description: >-
      Which options do you want to enable?
    type: multiSelect
    options:
      - value: red
      - value: green
      - value: blue
Pola parametru jednokrotnego wyboru
type
ciąg znaków

select lub multiSelect

Określa, że parametr może mieć jedną wartość (select) lub kilka wartości (multiSelect) wybranych z zestawu predefiniowanych opcji.

options
lista opcji
(wymagany)

Opcje, z których użytkownik może wybierać.

Pola opcji
value
ciąg znaków
(wymagany)
Jedna z wartości, którą może wybrać użytkownik. Jest to wartość, którą uzyskasz, gdy odczytasz wartość parametru w kodzie.
label
string
(opcjonalnie)
Krótki opis opcji do wyboru. Jeśli go pominiesz, domyślnie zostanie użyta wartość value.

Parametry zasobu, które można wybrać

Parametry zasobów, które można wybrać, zachęcają użytkowników do wybrania zasobu (instancji bazy danych, zasobnika pamięci itp.) z projektu.

params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      Which resource do you want to use?
    type: selectresource
    resourceType: product.googleapis.com/ResourceType
Pola parametrów zasobów
type
ciąg znaków

selectresource

Określa, że parametr reprezentuje zasób projektu

resourceType
ciąg znaków
(wymagany)

Typ zasobu, który ma być wyświetlany użytkownikowi do wyboru.

Prawidłowe wartości:

  • storage.googleapis.com/Bucket
  • firestore.googleapis.com/Database
  • firebasedatabase.googleapis.com/DatabaseInstance

Jednak obecnie tylko kontenery Cloud Storage mają interfejs wyboru (inne typy zasobów są prezentowane jako pola tekstowe do wpisywania dowolnego tekstu).

Parametry obiektu tajnego

Wartości tajne podane przez użytkownika (np. klucze interfejsu API) są obsługiwane w inny sposób:

  • Wartości tajne są przechowywane w usłudze Cloud Secret Manager. Dostęp do tych wartości mają tylko autoryzowani klienci (np. zainstalowana instancja rozszerzenia).
  • Gdy użytkownicy są proszeni o podanie tych wartości, wpisane przez nich dane nie są wyświetlane.
params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      What is the secret value?
    type: secret
Pola parametru tajnego
type
ciąg znaków

secret

Określa, że parametr jest wartością tajną.

Zasoby Cloud Functions

Te pola deklarują funkcje Cloud Functions zawarte w rozszerzeniu. Składnia deklaracji zasobu wygląda nieco inaczej w przypadku funkcji 1. i 2. generacji, które mogą współistnieć w rozszerzeniu.

Cloud Functions 1 generacji

resources:
  - name: functionName
    type: firebaseextensions.v1beta.function
    description: >-
      Description of what the function does. (One or two
      sentences.)
    properties:
      runtime: runtime-version
      eventTrigger:
        eventType: google.product.event
        resource: projects/_/resource/specifier
Pola zasobów
name
ciąg znaków
(wymagany)

Przyjazna dla użytkownika nazwa wyeksportowanej funkcji.

Jeśli nie określisz właściwości entryPoint (patrz poniżej), ta wartość musi być zgodna z nazwą funkcji w kodzie źródłowym funkcji.

Ostateczna nazwa wdrożonej funkcji będzie miała format: ext-extension-instance-id-name.

type
ciąg znaków
(wymagany)
W przypadku zasobu funkcji 1 generacji:firebaseextensions.v1beta.function
description
ciąg znaków
(wymagany)

Krótki opis zadania, które funkcja wykonuje w przypadku rozszerzenia.

properties
(wymagane)

Właściwości Cloud Functions 1 generacji. Najważniejsze właściwości są wymienione poniżej, ale pełną listę znajdziesz w dokumentacji Cloud Functions.

Usługi
location
(opcjonalnie)

Lokalizacja, w której ma zostać wdrożona funkcja. Domyślna wartość to us-central1.

entryPoint
(opcjonalnie)
Nazwa wyeksportowanej funkcji w kodzie źródłowym funkcji, której rozszerzenie powinno szukać. Domyślnie jest to wartość name podana powyżej.
sourceDirectory
(opcjonalnie)

Katalog, który zawiera plik package.json w katalogu głównym. Plik z kodem źródłowym funkcji musi znajdować się w tym katalogu. Domyślna wartość to functions.

Uwaga: pole mainpackage.json określa plik kodu źródłowego funkcji (np. index.js).

timeout
(opcjonalnie)

Maksymalny czas wykonania funkcji.

  • Domyślnie: 60s
  • Maksymalna wartość: 540s
availableMemoryMb
(opcjonalnie)

Ilość pamięci w MB dostępnej dla funkcji.

  • Domyślnie: 256
  • Prawidłowe wartości: 128, 256, 512, 10242048
runtime
(zalecane)

Środowisko wykonawcze funkcji.

httpsTrigger
lub
eventTrigger
lub
scheduleTrigger
lub
taskQueueTrigger
(wymagany jest jeden z tych typów aktywatorów funkcji)
Szczegółowe informacje o poszczególnych typach reguł znajdziesz w artykule Pisanie funkcji Cloud Functions dla rozszerzenia.

Cloud Functions 2 generacji

resources:
  - name: functionName
    type: firebaseextensions.v1beta.v2function
    description: >-
      Description of what the function does. (One or two
      sentences.)
    properties:
      buildConfig:
        runtime: nodejs16
      serviceConfig:
        availableMemory: 512M
      eventTrigger:
        eventType: google.firebase.firebasealerts.alerts.v1.published
        triggerRegion: global
        eventFilters:
          - attribute: alerttype
            value: crashlytics.newFatalIssue

Pola zasobów
name
ciąg znaków
(wymagany)

Przyjazna dla użytkownika nazwa wyeksportowanej funkcji.

Jeśli nie określisz właściwości entryPoint (patrz poniżej), ta wartość musi być zgodna z nazwą funkcji w kodzie źródłowym funkcji.

Ostateczna nazwa wdrożonej funkcji będzie miała format: ext-extension-instance-id-name.

type
ciąg znaków
(wymagany)
W przypadku zasobu funkcji 2 generacji:firebaseextensions.v1beta.v2function
description
ciąg znaków
(wymagany)

Krótki opis zadania, które funkcja wykonuje w przypadku rozszerzenia.

properties
(wymagane)

Właściwości Cloud Functions 2 generacji. Najważniejsze właściwości są wymienione poniżej, ale pełną listę znajdziesz w dokumentacji Cloud Functions.

Usługi
location
(opcjonalnie)

Lokalizacja, w której ma zostać wdrożona funkcja. Domyślna wartość to us-central1.

sourceDirectory
(opcjonalnie)

Katalog, który zawiera plik package.json w katalogu głównym. Plik z kodem źródłowym funkcji musi znajdować się w tym katalogu. Domyślna wartość to functions.

Uwaga: pole mainpackage.json określa plik kodu źródłowego funkcji (np. index.js).

Dostępne są też 3 pola typu obiektu z własnymi właściwościami:

Właściwości buildConfig
buildConfig.runtime
(zalecane)

Środowisko wykonawcze funkcji.

buildConfig.entryPoint
(opcjonalnie)
Nazwa wyeksportowanej funkcji w kodzie źródłowym funkcji, której rozszerzenie powinno szukać. Domyślnie jest to wartość name podana powyżej.
Właściwości serviceConfig
serviceConfig.timeoutSeconds
(opcjonalnie)

Maksymalny czas wykonania funkcji.

  • Domyślnie: 60
  • Maksymalna wartość: 540
serviceConfig.availableMemory
(opcjonalnie)
Ilość pamięci dostępnej dla funkcji. Domyślna wartość to 256M. Obsługiwane jednostki to k, M, G, MiGi. Jeśli nie podasz jednostki, wartość zostanie zinterpretowana jako bajty.
Właściwości eventTrigger
eventTrigger.eventType
(wymagane)
Typ zdarzenia, którego chcesz nasłuchiwać. Więcej informacji o typach zdarzeń dostępnych w poszczególnych usługach znajdziesz w artykule Pisanie funkcji Cloud Functions na potrzeby rozszerzenia.
eventTrigger.eventFilters
(opcjonalnie)
Filtry, które dodatkowo ograniczają zdarzenia, których nasłuchuje funkcja. Możesz na przykład nasłuchiwać tylko zdarzeń pasujących do określonego wzorca zasobu. Więcej informacji o filtrowaniu poszczególnych typów zdarzeń znajdziesz w artykule Pisanie funkcji Cloud Functions na potrzeby rozszerzenia.
eventTrigger.channel
(opcjonalnie)
Nazwa kanału powiązanego z aktywatorem w formacie projects/{project}/locations/{location}/channels/{channel}. Jeśli pominiesz tę właściwość, funkcja będzie nasłuchiwać zdarzeń na domyślnym kanale projektu.
eventTrigger.triggerRegion
(opcjonalnie)
Aktywator będzie otrzymywać tylko zdarzenia pochodzące z tego regionu. Może to być ten sam region co funkcja, inny region, wiele regionów lub region globalny. Jeśli nie zostanie podany, domyślnie będzie to ten sam region co funkcja.

Zdarzenia cyklu życia

Zdarzenia cyklu życia umożliwiają określanie funkcji, które będą uruchamiane, gdy użytkownik zainstaluje, zaktualizuje lub skonfiguruje instancję rozszerzenia. Zobacz Obsługa zdarzeń cyklu życia rozszerzenia.

lifecycleEvents:
  onInstall:
    function: myTaskFunction
    processingMessage: Describes the task being completed
  onUpdate:
    function: myOtherTaskFunction
    processingMessage: Describes the task being completed
  onConfigure:
    function: myOtherTaskFunction
    processingMessage: Describes the task being completed
Pola zdarzeń cyklu życia
onInstall
(opcjonalnie)

Określa funkcję, która jest uruchamiana, gdy użytkownik zainstaluje rozszerzenie.

Specyfikacja funkcji
function
ciąg znaków
(wymagany)

Nazwa funkcji wywoływanej przez kolejkę zadań, która będzie obsługiwać zdarzenie.

Ta funkcja musi być zadeklarowana w sekcji resources i musi mieć zdefiniowaną wartość taskQueue.

processingMessage
ciąg znaków
(wymagany)
Komunikat wyświetlany w konsoli Firebase podczas wykonywania zadania.
onUpdate
(opcjonalnie)

Określa funkcję, która jest uruchamiana, gdy użytkownik zaktualizuje rozszerzenie.

Specyfikacja funkcji
function
ciąg znaków
(wymagany)

Nazwa funkcji wywoływanej przez kolejkę zadań, która będzie obsługiwać zdarzenie.

Ta funkcja musi być zadeklarowana w sekcji resources i musi mieć zdefiniowaną wartość taskQueue.

processingMessage
ciąg znaków
(wymagany)
Komunikat wyświetlany w konsoli Firebase podczas wykonywania zadania.
onConfigure
(opcjonalnie)

Określa funkcję, która jest uruchamiana, gdy użytkownik ponownie konfiguruje rozszerzenie.

Specyfikacja funkcji
function
ciąg znaków
(wymagany)

Nazwa funkcji wywoływanej przez kolejkę zadań, która będzie obsługiwać zdarzenie.

Ta funkcja musi być zadeklarowana w sekcji resources i musi mieć zdefiniowaną wartość taskQueue.

processingMessage
ciąg znaków
(wymagany)
Komunikat wyświetlany w konsoli Firebase podczas wykonywania zadania.

Zdarzenia niestandardowe (Eventarc)

Zdarzenia niestandardowe to zdarzenia emitowane przez rozszerzenie, które umożliwiają użytkownikom wstawianie własnej logiki do rozszerzenia. Zapoznaj się z sekcją Eventarc w artykule Dodawanie do rozszerzenia funkcji wywoływanych przez użytkownika.

events:
  - type: publisher-id.extension-name.version.event-name
    description: Description of the event
  - type: publisher-id.extension-name.version.another-event-name
    description: Description of the other event
Pola zdarzeń niestandardowych
type
ciąg znaków
(wymagany)
Identyfikator typu zdarzenia. Utwórz identyfikator z 3–4 pól oddzielonych kropkami: identyfikator wydawcy, nazwa rozszerzenia i nazwa zdarzenia są wymagane, a pole wersji jest zalecane. Wybierz unikalną i opisową nazwę zdarzenia dla każdego publikowanego typu zdarzenia.
description
ciąg znaków
(wymagany)
Opis wydarzenia.