Publica tu extensión

En esta página, se explica cómo puedes publicar una extensión en Extensions Hub.

Antes de comenzar

Si quieres compartir una extensión, primero debes registrarte como publicador de extensiones.

Fuentes verificables

Todas las extensiones publicadas en Extensions Hub deben tener una fuente que se pueda verificar públicamente. En lugar de subir el código fuente de la extensión directamente en Extensions Hub, debes especificar la ubicación del código fuente para que Extensions Hub lo descargue y compile desde allí.

Esto significa que tu código fuente de extensión estará disponible en un repositorio público de GitHub.

Subir código desde una fuente verificable tiene los siguientes beneficios:

  • Los usuarios pueden inspeccionar el código fuente de la revisión específica de la extensión que se instalará.
  • Puedes asegurarte de subir solo lo que quieres subir, no el trabajo en curso ni los archivos restantes del desarrollo.

Ciclo de desarrollo recomendado

Las herramientas de desarrollo de Extensiones de Firebase admiten la carga de versiones previas al lanzamiento de tus extensiones, lo que te permite probar tus extensiones con facilidad y el proceso de instalación de extensiones en el mismo entorno en el que, finalmente, se lanzarán.

Esta función permite realizar un ciclo de desarrollo como el siguiente:

  1. Desarrolla e itera rápidamente tu extensión con Firebase Emulator Suite.

  2. Para probar tu extensión en un proyecto real, instálala desde la fuente local:

    firebase ext:install /path/to/extension
    firebase deploy --only extensions
    
  3. Sube una versión previa al lanzamiento a Extensions Hub (consulta a continuación). Distribuye el vínculo de instalación para realizar pruebas más amplias y, luego, itera subiendo más versiones previas al lanzamiento según sea necesario.

  4. Sube la versión final y estable a Extensions Hub (consulta a continuación) y envíala para su revisión. Si la extensión aprueba la revisión, se publicará en Extensions Hub.

  5. Aumenta el número de versión en extension.yaml y repite este ciclo para la próxima versión de la extensión.

Sube una extensión nueva

Sigue estos pasos para subir una extensión por primera vez:

  1. Opcional: Confirma tu código en un repositorio público de GitHub.

  2. Ejecuta el comando ext:dev:upload de Firebase CLI:

    GitHub

    firebase ext:dev:upload your_publisher_id/your_extension_id
    

    Fuente local

    cd /path/to/extension
    firebase ext:dev:upload your_publisher_id/your_extension_id --local
    

    En la invocación del comando, especifica la siguiente información:

    • El ID de publicador que registraste.

    • Una cadena de ID que identificará la extensión. Nombra tus extensiones con el siguiente formato: firebase-product-description-of-tasks-performed. Por ejemplo: firestore-bigquery-export.

    El comando te solicitará información adicional:

    • Si vas a subir desde GitHub:

      • La URL al repositorio de la extensión en GitHub. Ten en cuenta que un repositorio puede contener varias extensiones, siempre que cada una tenga una raíz única.

        Cuando subas una extensión nueva por primera vez, el repositorio se registrará como la fuente canónica de la extensión.

      • El directorio en el repositorio que contiene tu extensión.

      • La referencia de Git de la confirmación de la que deseas compilar la fuente de la versión de la extensión. Puede ser un hash de confirmación, una etiqueta o el nombre de una rama.

    • La etapa de lanzamiento de la versión que subirás.

      Las etapas alpha, beta y rc (versiones candidatas para el lanzamiento) permiten subir versiones previas al lanzamiento para que los verificadores las instalen. Usa una de estas etapas para subir una extensión nueva.

      La etapa stable se usa para que las versiones públicas se publiquen en Extensions Hub. Si subes una versión stable, se iniciará automáticamente una revisión y, si se aprueba, se publicará la extensión.

    Ten en cuenta que no especificas un número de versión (este valor proviene del archivo extension.yaml). Cuando subes una versión de extensión previa al lanzamiento, se adjuntan el número de etapa y carga a la versión. Por ejemplo, si extension.yaml especifica la versión 1.0.1 y subes una versión candidata, se generaría la versión 1.0.1-rc.0. Si subes otra versión candidata de la misma versión, el recuento aumentará automáticamente, lo que generará 1.0.1-rc.1, y así sucesivamente.

Ahora que subiste una versión previa al lanzamiento de la extensión, puedes compartirla con otras personas para que la prueben. Los usuarios pueden instalar tu extensión de dos maneras:

  • Con la consola: Los usuarios pueden instalar la extensión cuando hacen clic en un vínculo que tenga el siguiente formato:

    https://console.firebase.google.com/project/_/extensions/install?ref=your_publisher_id/your_extension_id@version

    Puedes compartir el vínculo directo con los verificadores.

  • Con la CLI: los usuarios pueden instalar la extensión pasando la cadena de ID de la extensión al comando ext:install:

    firebase ext:install your_publisher_id/your_extension_id@version \
        --project=destination_project_id
    

Sube una versión actualizada

Después de subir la primera versión de una extensión, puedes subir actualizaciones para corregir problemas, agregar funciones o avanzar la etapa de lanzamiento. Cuando subas una versión nueva, se solicitará a los usuarios que tengan instalada una versión anterior de la extensión que realicen la actualización en Firebase console.

Sigue estos pasos para subir una actualización:

  1. Opcional: Confirma tu código en un repositorio público de Git.

  2. Ejecuta el comando ext:dev:upload de Firebase CLI:

    GitHub

    firebase ext:dev:upload your_publisher_id/your_extension_id
    

    Esta vez, no se te pedirá que especifiques el repositorio de GitHub ni el directorio raíz de la extensión, dado que ya se configuraron para la extensión. Si refactorizaste la estructura del repositorio o migraste a un repositorio nuevo, puedes cambiarlo con los argumentos del comando --root y --repo.

    Fuente local

    cd /path/to/extension
    firebase ext:dev:upload your_publisher_id/your_extension_id --local
    

Envía una extensión para su publicación

Cuando estés listo para publicar tu extensión de forma pública, sigue estos pasos:

  1. Confirma tu código en un repositorio público de Git (obligatorio para las actualizaciones públicas).

  2. Ejecuta el comando ext:dev:upload de Firebase CLI y especifica stable como la etapa de lanzamiento:

    firebase ext:dev:upload your_publisher_id/your_extension_id
    
  3. Si publicaste una versión de la extensión con anterioridad, si subes una versión estable nueva, se enviará la extensión a revisión automáticamente.

    Si subiste la primera versión estable de la extensión, busca la extensión en el panel del publicador y haz clic en Publish to Extensions Hub.

Una vez que se envíe, la revisión puede tardar unos días. Si se acepta, la extensión se publicará en Extensions Hub. De lo contrario, recibirás un mensaje en el que se explicará el motivo. Podrás abordar los problemas informados y volver a enviar la extensión para que se revise.

Para acelerar la revisión y aumentar las posibilidades de aprobar en el primer intento, antes de enviarla, verifica lo siguiente:

  • Probaste exhaustivamente la extensión y el proceso de instalación.
  • Tu documentación está completa y es correcta, y se renderiza bien en Firebase console.
  • El nombre y el desarrollo de la marca que uses como publicador te identifican de manera clara y precisa.
  • El nombre, la descripción y el ícono de la extensión representan de forma clara y precisa el propósito de tu extensión.
  • Aplicaste etiquetas útiles y precisas.
  • En extension.yaml, declaraste todas las APIs de Google y de terceros que usas, así como todos los tipos de eventos que emite tu extensión.
  • Solo solicitas acceso a los roles necesarios para que la extensión funcione, y les explicaste claramente a los usuarios el motivo por el que lo necesitas.
  • Tus archivos de origen tienen una licencia clara según las condiciones de Apache-2.0.

Administra las extensiones subidas y publicadas

Obtén una lista de las extensiones que subiste

Para enumerar las extensiones que subiste con tu ID de publicador, realiza una de las siguientes acciones:

Panel del editor

Consúltalas en el panel del publicador.

Firebase CLI

Ejecuta el comando ext:dev:list:

firebase ext:dev:list your_publisher_id

Consulta el uso de las extensiones que subiste

Para consultar el uso de las extensiones que subiste con tu ID de publicador, realiza una de las siguientes acciones:

Panel del editor

El panel del publicador tiene métricas de uso acumulativas para todas tus extensiones y métricas individuales para cada extensión.

Firebase CLI

Ejecuta el comando ext:dev:usage:

firebase ext:dev:usage your_publisher_id

Da de baja una versión de la extensión

Es posible que en algún momento quieras dar de baja una versión anterior de tu extensión. Por ejemplo, si lanzas una versión nueva que corrige un error grave o actualiza una dependencia con una actualización de seguridad importante, es importante evitar que los usuarios nuevos instalen una versión anterior y se los debe alentar a que actualicen.

Para dar de baja una versión de la extensión, realiza una de las siguientes acciones:

Panel del editor

  1. En el panel del publicador, haz clic en la extensión para abrir su vista de detalles.
  2. Selecciona la versión que quieres dar de baja.
  3. Haz clic en Dar de baja.

Firebase CLI

Ejecuta el comando ext:dev:deprecate:

firebase ext:dev:deprecate your_publisher_id/your_extension_id versions \
    [--message "deprecation_message"]

Puedes especificar una sola versión o un rango de versiones. Ejemplos:

  • 1.0.2
  • 1.1.0-1.1.7
  • <1.2.0
  • 1.1.*

Las versiones obsoletas de una extensión no se enumeran en Extensions Hub y no se pueden instalar. Los usuarios cuyos proyectos tengan una versión obsoleta instalada verán un mensaje que los alentará a actualizarla. Mientras tanto, podrán seguir usando y reconfigurando la extensión.

Si todas las versiones de una extensión están obsoletas, la extensión se considera como tal y se quitará de Extensions Hub. Si subes una versión nueva de una extensión obsoleta, se iniciará automáticamente una revisión y, cuando se acepte, se volverá a publicar en Extensions Hub.

Para revertir la baja, usa el panel del publicador o ejecuta el comando ext:dev:undeprecate de Firebase CLI:

firebase ext:dev:undeprecate your_publisher_id/your_extension_id versions

Apéndice: Soluciona errores de compilación

Cuando subes tu extensión, el backend primero compila tu código fuente mediante el siguiente proceso:

  1. Clona tu repositorio de GitHub y consulta la referencia de origen especificada.

  2. Instala las dependencias de NPM mediante la ejecución de npm clean-install en cada directorio del código fuente de función especificado en extension.yaml (consulta sourceDirectory en Recursos de Cloud Function).

    Ten en cuenta lo siguiente:

    • Cada archivo package.json debe tener un archivo package-lock.json correspondiente. Para obtener más información, consulta npm-ci.

    • No se ejecutarán secuencias de comandos posteriores a la instalación durante la instalación de la dependencia. Si tu compilación de código fuente se basa en secuencias de comandos posteriores a la instalación, refactorízala antes de subirla.

  3. Compila el código ejecutando npm run build en cada directorio del código fuente de la función especificado en extension.yaml.

Solo el directorio raíz de la extensión se guardará en el paquete de extensión final que se compartirá.

Si recibes errores de compilación mientras subes la extensión, replica los pasos de compilación anteriores de manera local en un directorio nuevo hasta que no haya errores y, luego, intenta subirla de nuevo.