Cette page explique comment publier une extension sur Extensions Hub.
Avant que tu commences
Pour publier une extension, vous devez d'abord vous inscrire en tant qu'éditeur d'extensions .
Sources vérifiables
Toutes les extensions publiées sur Extensions Hub doivent avoir une source publiquement vérifiable. Plutôt que de télécharger le code source de votre extension directement sur Extensions Hub, vous spécifiez plutôt l'emplacement source et Extension Hub le téléchargera et le construira à partir de là.
Actuellement, cela signifie rendre le code source de votre extension disponible sur un référentiel GitHub public.
Le téléchargement à partir d’une source vérifiable présente plusieurs avantages :
- Les utilisateurs peuvent inspecter le code source de la révision spécifique de l'extension qui sera installée.
- Vous pouvez vous assurer de télécharger uniquement ce que vous avez l'intention de télécharger et non, par exemple, des travaux en cours ou des fichiers parasites restant du développement.
Cycle de développement recommandé
Les outils de développement d'extensions Firebase prennent en charge le téléchargement de versions préliminaires de vos extensions, ce qui vous permet de tester facilement vos extensions et le processus d'installation des extensions dans le même environnement dans lequel elles seront finalement publiées.
Cette capacité rend possible un cycle de développement comme le suivant :
Développez et itérez rapidement sur votre extension à l'aide de Firebase Emulator Suite .
Testez votre extension dans un projet réel en l'installant à partir d'une source locale :
firebase ext:install /path/to/extension
firebase deploy --only extensions
Téléchargez une version préliminaire sur Extensions Hub (voir ci-dessous). Distribuez le lien d'installation pour des tests plus larges et répétez en téléchargeant davantage de versions préliminaires si nécessaire.
Téléchargez la version finale et stable sur Extensions Hub (voir ci-dessous) et soumettez-la pour examen. Si l’extension réussit l’examen, elle sera publiée sur Extension Hub.
Incrémentez le numéro de version dans
extension.yaml
et répétez ce cycle pour la prochaine version de votre extension.
Téléchargez une nouvelle extension
Pour télécharger une extension pour la première fois :
Facultatif : validez votre code dans un référentiel GitHub public.
Exécutez la commande
ext:dev:upload
la CLI Firebase :GitHub
firebase ext:dev:upload your_publisher_id/your_extension_id
Source locale
cd /path/to/extension
firebase ext:dev:upload your_publisher_id/your_extension_id --local
Dans votre appel de commande, vous spécifiez les éléments suivants :
L'identifiant d'éditeur que vous avez enregistré .
Une chaîne d'identification qui identifiera l'extension. Nommez vos extensions au format suivant :
firebase-product - description-of-tasks-performed
. Par exemple :firestore-bigquery-export
La commande vous demandera des informations supplémentaires :
Si vous téléchargez depuis GitHub :
L'URL du référentiel de l'extension dans GitHub. Notez qu'un référentiel peut contenir plusieurs extensions à condition que chaque extension ait une racine unique.
Lorsque vous téléchargez une nouvelle extension pour la première fois, le référentiel sera enregistré comme source canonique de votre extension.
Le répertoire du référentiel qui contient votre extension.
La référence Git du commit à partir duquel vous souhaitez créer la source de la version de votre extension. Il peut s'agir d'un hachage de validation, d'une balise ou d'un nom de branche.
L'étape de publication de la version que vous téléchargez.
Les étapes
alpha
,beta
etrc
(release candidate) sont destinées au téléchargement de versions préliminaires que les testeurs doivent installer. Utilisez l'une de ces étapes pour le téléchargement initial d'une nouvelle extension.L'étape
stable
est utilisée pour les versions publiques à publier sur Extensions Hub. Le téléchargement d’une versionstable
lancera automatiquement une révision et, si elle réussit, publiera l’extension.
Notez que vous ne spécifiez pas de numéro de version : cette valeur provient du fichier
extension.yaml
. Lorsque vous téléchargez une version d'extension préliminaire, l'étape et le numéro de téléchargement sont ajoutés à la version. Par exemple, siextension.yaml
spécifie la version 1.0.1 et que vous téléchargez une version candidate, cela donnera la version1.0.1-rc.0
; le téléchargement d'une autre version candidate de la même version incrémenterait automatiquement le décompte, ce qui donnerait1.0.1-rc.1
, et ainsi de suite.
Maintenant que vous avez téléchargé une version préliminaire de l'extension, vous pouvez la partager avec d'autres à des fins de test. Les utilisateurs peuvent installer votre extension de deux manières :
Avec la console : Les utilisateurs peuvent installer l'extension en cliquant sur un lien au format suivant :
https://console.firebase.google.com/project/_/extensions/install?ref=your_publisher_id/your_extension_id@version
Vous pouvez partager le lien direct avec vos testeurs.
Avec la CLI : les utilisateurs peuvent installer l'extension en passant la chaîne d'ID d'extension à la commande
ext:install
:firebase ext:install your_publisher_id/your_extension_id@version \ --project=destination_project_id
Télécharger une version mise à jour
Après avoir téléchargé la première version d'une extension, vous pouvez télécharger des mises à jour pour résoudre des problèmes, ajouter des fonctionnalités ou avancer dans la phase de publication. Lorsque vous téléchargez une nouvelle version, les utilisateurs qui ont installé une ancienne version de votre extension seront invités dans la console Firebase à effectuer la mise à niveau.
Pour télécharger une mise à jour :
Facultatif : validez votre code dans un référentiel Git public.
Exécutez la commande
ext:dev:upload
la CLI Firebase :GitHub
firebase ext:dev:upload your_publisher_id/your_extension_id
Cette fois, vous ne serez pas invité à spécifier le référentiel GitHub ou le répertoire racine de l'extension puisqu'ils ont déjà été configurés pour votre extension. Si vous avez depuis refactorisé la structure de votre référentiel ou migré vers un nouveau référentiel, vous pouvez les modifier avec les arguments de commande
--root
et--repo
.Source locale
cd /path/to/extension
firebase ext:dev:upload your_publisher_id/your_extension_id --local
Soumettre une extension pour publication
Lorsque vous êtes prêt à publier votre extension :
Validez votre code dans un référentiel Git public. (Obligatoire pour les versions publiques.)
Exécutez la commande
ext:dev:upload
de la CLI Firebase, en spécifiantstable
comme étape de publication :firebase ext:dev:upload your_publisher_id/your_extension_id
Si vous avez déjà publié une version de votre extension, le téléchargement d'une nouvelle version stable soumettra automatiquement l'extension pour examen.
Si vous avez téléchargé la première version stable de l'extension, recherchez l'extension sur le tableau de bord de votre éditeur , puis cliquez sur Publier sur Extensions Hub .
Une fois soumis, l’examen peut prendre quelques jours. Si elle est acceptée, l’extension sera publiée sur Extensions Hub. En cas de refus, vous recevrez un message expliquant la raison ; vous pouvez ensuite résoudre les problèmes signalés et soumettre à nouveau pour examen.
Pour accélérer l'examen et augmenter vos chances de réussite du premier coup, avant de soumettre, vérifiez les éléments suivants :
- Vous avez minutieusement testé votre extension et le processus d'installation.
- Votre documentation est complète et correcte, et s'affiche bien dans la console Firebase.
- Votre nom d'éditeur et votre image de marque vous identifient clairement et précisément en tant qu'éditeur.
- Le nom, la description et l'icône de votre extension représentent clairement et précisément l'objectif de votre extension.
- Vous avez appliqué des balises utiles et précises.
- Vous avez déclaré dans
extension.yaml
toutes les API Google et non Google que vous utilisez, ainsi que tous les types d'événements émis par votre extension. - Vous demandez l’accès uniquement aux rôles nécessaires au fonctionnement de l’extension et vous avez clairement expliqué aux utilisateurs pourquoi vous avez besoin d’un tel accès.
- Vos fichiers sources sont clairement sous licence selon les termes d'
Apache-2.0
.
Gérer les extensions téléchargées et publiées
Répertoriez vos extensions téléchargées
Pour répertorier les extensions que vous avez importées sous votre référence éditeur, effectuez l'une des opérations suivantes :
Tableau de bord de l'éditeur
Consultez-les sur le tableau de bord de l'éditeur .
CLI Firebase
Exécutez la commande ext:dev:list
:
firebase ext:dev:list your_publisher_id
Afficher l'utilisation de vos extensions téléchargées
Pour afficher l'utilisation des extensions que vous avez importées sous votre référence éditeur, effectuez l'une des opérations suivantes :
Tableau de bord de l'éditeur
Le tableau de bord de l'éditeur contient des métriques d'utilisation cumulées pour toutes vos extensions et des métriques individuelles pour chaque extension.
CLI Firebase
Exécutez la commande ext:dev:usage
:
firebase ext:dev:usage your_publisher_id
Déprécier une version d'une extension
À un moment donné, vous souhaiterez peut-être rendre obsolète une ancienne version de votre extension. Par exemple, si vous publiez une nouvelle version qui corrige un bogue critique ou met à jour une dépendance avec une mise à jour de sécurité importante, il est important d'empêcher les nouveaux utilisateurs d'installer une ancienne version et d'encourager les utilisateurs existants à effectuer la mise à niveau.
Pour rendre obsolète une version d'une extension, effectuez l'une des opérations suivantes :
Tableau de bord de l'éditeur
- Sur le tableau de bord de l'éditeur , cliquez sur l'extension pour ouvrir sa vue détaillée.
- Sélectionnez la version que vous souhaitez rendre obsolète.
- Cliquez sur Version obsolète .
CLI Firebase
Exécutez la commande ext:dev:deprecate
:
firebase ext:dev:deprecate your_publisher_id/your_extension_id versions \
[--message "deprecation_message"]
Vous pouvez spécifier une seule version ou une plage de versions. Exemples:
-
1.0.2
-
1.1.0-1.1.7
-
<1.2.0
-
1.1.*
Les versions obsolètes d'une extension ne sont pas répertoriées sur Extensions Hub et ne peuvent pas être installées. Les utilisateurs dont les projets ont une version obsolète installée verront un message les encourageant à mettre à niveau ; ils peuvent toujours utiliser et reconfigurer l'extension entre-temps.
Si chaque version d'une extension est obsolète, l'extension est considérée comme obsolète et elle sera supprimée de la liste d'Extensions Hub. Le téléchargement d’une nouvelle version d’une extension obsolète lancera automatiquement une révision et, une fois acceptée, la publiera à nouveau sur Extensions Hub.
Pour annuler une dépréciation, utilisez le tableau de bord de l'éditeur ou exécutez la commande ext:dev:undeprecate
de la CLI Firebase :
firebase ext:dev:undeprecate your_publisher_id/your_extension_id versions
Annexe : Dépannage des erreurs de build
Lorsque vous téléchargez votre extension, le backend crée d'abord votre code source en suivant le processus suivant :
Clone votre référentiel GitHub et extrait la référence source spécifiée.
Installe les dépendances NPM en exécutant
npm clean-install
dans chaque répertoire source de fonction spécifié dansextension.yaml
(voirsourceDirectory
dans Cloud Function resources ).Notez ce qui suit :
Chaque fichier
package.json
doit avoir un fichierpackage-lock.json
correspondant. Pour plus d’informations, consultez npm-ci .Les scripts de post-installation ne seront pas exécutés lors de l'installation des dépendances. Si la construction de votre code source repose sur des scripts de post-installation, refactorisez-le avant de le télécharger.
Construit votre code en exécutant
npm run build
dans chaque répertoire source de fonction spécifié dansextension.yaml
.
Seul le répertoire racine de votre extension sera enregistré dans le package d'extension final qui sera partagé.
Si vous obtenez des erreurs de build lors du téléchargement de votre extension, répliquez les étapes de build ci-dessus localement dans un nouveau répertoire jusqu'à ce qu'il n'y ait plus d'erreurs, puis réessayez de télécharger.