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:
Desarrolla y repite rápidamente tu extensión usando Firebase Emulator Suite .
Pruebe su extensión en un proyecto real instalándola desde una fuente local:
firebase ext:install /path/to/extension
firebase deploy --only extensions
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.
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.
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:
Opcional : envíe su código a un repositorio público de GitHub.
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
yrc
(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ónstable
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, siextension.yaml
especifica la versión 1.0.1 y carga una versión candidata, el resultado será la versión1.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 resultado1.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:
Opcional : envíe su código a un repositorio público de Git.
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:
Confirme su código en un repositorio público de Git. (Obligatorio para lanzamientos públicos).
Ejecute el comando
ext:dev:upload
de Firebase CLI y especifiquestable
como etapa de lanzamiento:firebase ext:dev:upload your_publisher_id/your_extension_id
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
- En el panel del editor , haga clic en la extensión para abrir su vista de detalles.
- Seleccione la versión que desea dejar de usar.
- 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:
Clona su repositorio de GitHub y verifica la referencia fuente especificada.
Instala las dependencias de NPM ejecutando
npm clean-install
en cada directorio de origen de función especificado enextension.yaml
(consultesourceDirectory
en Recursos de función de nube ).Tenga en cuenta lo siguiente:
Cada archivo
package.json
debe tener un archivopackage-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.
Crea tu código ejecutando
npm run build
en cada directorio fuente de función especificado enextension.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.