Publica tu extensión

Esta página explica cómo puede publicar una extensión en Extensions Hub.

Antes de que empieces

Para publicar una extensión, primero debe registrarse como editor de extensiones .

Fuentes verificables

Todas las extensiones publicadas en Extensions Hub deben tener una fuente verificable públicamente. En lugar de cargar el código fuente de su extensión directamente en Extensions Hub, especifique la ubicación de origen y Extension Hub lo descargará y lo compilará desde allí.

Actualmente, esto significa hacer que el código fuente de su extensión esté disponible en un repositorio público de GitHub.

Cargar desde una fuente verificable tiene varios beneficios:

  • Los usuarios pueden inspeccionar el código fuente de la revisión específica de la extensión que se instalará.
  • Puede asegurarse de cargar solo lo que desea cargar y no, por ejemplo, el trabajo en progreso o archivos perdidos que queden del desarrollo.

Ciclo de desarrollo recomendado

Las herramientas de desarrollo de Firebase Extensions admiten la carga de versiones preliminares de sus extensiones, lo que le facilita probar sus extensiones y el proceso de instalación de extensiones en el mismo entorno en el que eventualmente se lanzarán.

Esta capacidad hace posible un ciclo de desarrollo como el siguiente:

  1. Desarrolla y repite rápidamente tu extensión usando Firebase Emulator Suite .

  2. Pruebe su extensión en un proyecto real instalándola desde una fuente local:

    firebase ext:install /path/to/extension
    firebase deploy --only extensions
    
  3. Cargue una versión preliminar a Extensions Hub (ver más abajo). Distribuya el enlace de instalación para realizar pruebas más amplias e itere cargando más versiones preliminares según sea necesario.

  4. Cargue la versión final y estable en Extensions Hub (ver más abajo) y envíela para su revisión. Si la extensión pasa la revisión, se publicará en Extension Hub.

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

Sube una nueva extensión

Para cargar una extensión por primera vez:

  1. Opcional : envíe su código a un repositorio público de GitHub.

  2. Ejecute 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 su invocación de comando, especifica lo siguiente:

    • El ID de editor que registró .

    • Una cadena de identificación que identificará la extensión. Asigne un nombre a sus extensiones con el siguiente formato: firebase-product - description-of-tasks-performed . Por ejemplo: firestore-bigquery-export

    El comando le solicitará información adicional:

    • Si estás subiendo desde GitHub:

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

        Cuando cargue una nueva extensión por primera vez, el repositorio se registrará como fuente canónica para su extensión.

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

      • La referencia de Git de la confirmación a partir de la cual desea crear la fuente de la versión de su extensión. Puede ser un hash de confirmación, una etiqueta o un nombre de rama.

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

      Las etapas alpha , beta y rc (candidato de lanzamiento) son para cargar versiones preliminares para que las instalen los evaluadores. Utilice una de estas etapas para la carga inicial de una nueva extensión.

      La etapa stable se utiliza para lanzamientos públicos que se publicarán en Extensions Hub. Cargar una versión stable iniciará automáticamente una revisión y, si se aprueba, se publicará la extensión.

    Observe que no especifica un número de versión; este valor proviene del archivo extension.yaml . Cuando carga una versión de extensión preliminar, la etapa y el número de carga se agregan a la versión. Por ejemplo, si extension.yaml especifica la versión 1.0.1 y carga una versión candidata, el resultado será la versión 1.0.1-rc.0 ; cargar otra versión candidata de la misma versión incrementaría automáticamente el recuento, lo que daría como resultado 1.0.1-rc.1 , y así sucesivamente.

Ahora que ha subido una versión preliminar de la extensión, puede compartirla con otras personas para probarla. Los usuarios pueden instalar su extensión de dos maneras:

  • Con la consola : los usuarios pueden instalar la extensión haciendo clic en un enlace con el siguiente formato:

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

    Puede compartir el enlace directo con sus evaluadores.

  • 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 haber cargado la primera versión de una extensión, puede cargar actualizaciones para solucionar problemas, agregar funciones o avanzar en la etapa de lanzamiento. Cuando cargues una nueva versión, a los usuarios que tengan instalada una versión anterior de tu extensión se les solicitará en Firebase console que actualicen.

Para cargar una actualización:

  1. Opcional : envíe su código a un repositorio público de Git.

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

    GitHub

    firebase ext:dev:upload your_publisher_id/your_extension_id
    

    Esta vez no se le pedirá que especifique el repositorio de GitHub o el directorio raíz de la extensión, ya que ya se han configurado para su extensión. Si desde entonces refactorizó la estructura de su repositorio o migró a un nuevo repositorio, puede cambiarlos 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
    

Enviar una extensión para su publicación

Cuando esté listo para publicar públicamente su extensión:

  1. Confirme su código en un repositorio público de Git. (Obligatorio para lanzamientos públicos).

  2. Ejecute el comando ext:dev:upload de Firebase CLI y especifique stable como etapa de lanzamiento:

    firebase ext:dev:upload your_publisher_id/your_extension_id
    
  3. Si anteriormente publicó una versión de su extensión, al cargar una nueva versión estable se enviará automáticamente la extensión para su revisión.

    Si cargó la primera versión estable de la extensión, busque la extensión en el panel de su editor y haga clic en Publicar en Extensions Hub .

Una vez enviada, la revisión puede tardar unos días. Si se acepta, la extensión se publicará en Extensions Hub. Si es rechazado, recibirá un mensaje explicando el motivo; Luego puede abordar los problemas informados y volver a enviarlos para su revisión.

Para acelerar la revisión y aumentar sus posibilidades de aprobar en el primer intento, antes de enviar, verifique lo siguiente:

  • Ha probado exhaustivamente su extensión y el proceso de instalación.
  • Su documentación es completa y correcta, y se muestra bien en Firebase console.
  • El nombre y la marca de su editor lo identifican de manera clara y precisa como editor.
  • El nombre, la descripción y el ícono de su extensión representan de manera clara y precisa el propósito de su extensión.
  • Ha aplicado etiquetas útiles y precisas.
  • Ha declarado en extension.yaml todas las API de Google y no Google que utiliza, y todos los tipos de eventos que emite su extensión.
  • Está solicitando acceso solo a las funciones necesarias para que funcione la extensión y ha explicado claramente a los usuarios por qué necesita dicho acceso.
  • Sus archivos fuente tienen claramente licencia bajo los términos de Apache-2.0 .

Administrar extensiones cargadas y publicadas

Enumere sus extensiones cargadas

Para enumerar las extensiones que ha subido con su ID de editor, realice una de las siguientes acciones:

Panel de editor

Véalos en el panel del editor .

CLI de base de fuego

Ejecute el comando ext:dev:list :

firebase ext:dev:list your_publisher_id

Ver el uso de sus extensiones cargadas

Para ver el uso de las extensiones que has subido con tu ID de editor, realiza una de las siguientes acciones:

Panel de editor

El panel del editor tiene métricas de uso acumuladas para todas sus extensiones y métricas individuales para cada extensión.

CLI de base de fuego

Ejecute el comando ext:dev:usage :

firebase ext:dev:usage your_publisher_id

Desaprobar una versión de una extensión

En algún momento, es posible que desees dejar de usar una versión antigua de tu extensión. Por ejemplo, si lanza una nueva versión que corrige un error crítico o actualiza una dependencia con una actualización de seguridad importante, es importante evitar que nuevos usuarios instalen una versión anterior y alentar a los usuarios existentes a actualizar.

Para desaprobar una versión de una extensión, realice una de las siguientes acciones:

Panel de editor

  1. En el panel del editor , haga clic en la extensión para abrir su vista de detalles.
  2. Seleccione la versión que desea dejar de usar.
  3. Haga clic en Desaprobar versión .

CLI de base de fuego

Ejecute el comando ext:dev:deprecate :

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

Puede especificar una única 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 aparecen en Extensions Hub y no se pueden instalar. Los usuarios cuyos proyectos tengan instalada una versión obsoleta verán un mensaje que les animará a actualizar; Mientras tanto, aún pueden usar y reconfigurar la extensión.

Si cada versión de una extensión está obsoleta, la extensión se considera obsoleta y se eliminará de la lista de Extensions Hub. Al cargar una nueva versión de una extensión obsoleta, se iniciará automáticamente una revisión y, una vez aceptada, se publicará en Extensions Hub una vez más.

Para revertir una desactivación, use el panel del editor o ejecute el comando ext:dev:undeprecate de Firebase CLI:

firebase ext:dev:undeprecate your_publisher_id/your_extension_id versions

Apéndice: Solución de problemas de errores de compilación

Cuando carga su extensión, el backend primero crea su código fuente mediante el siguiente proceso:

  1. Clona su repositorio de GitHub y verifica la referencia fuente especificada.

  2. Instala las dependencias de NPM ejecutando npm clean-install en cada directorio de origen de función especificado en extension.yaml (consulte sourceDirectory en Recursos de función de nube ).

    Tenga en cuenta lo siguiente:

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

    • Los scripts posteriores a la instalación no se ejecutarán durante la instalación de la dependencia. Si la compilación de su código fuente se basa en scripts posteriores a la instalación, refactorícelo antes de cargarlo.

  3. Crea tu código ejecutando npm run build en cada directorio fuente de función especificado en extension.yaml .

Sólo el directorio raíz de su extensión se guardará en el paquete de extensión final que se compartirá.

Si obtiene errores de compilación mientras carga su extensión, replique los pasos de compilación anteriores localmente en un directorio nuevo hasta que no haya errores y luego intente cargar nuevamente.