На этой странице объясняется, как опубликовать расширение в Extensions Hub.
Прежде чем начать
Для публикации расширения сначала необходимо зарегистрироваться в качестве издателя расширений .
Проверяемые источники
Все расширения, опубликованные на Extensions Hub, должны иметь общедоступный, проверяемый исходный код. Вместо того чтобы загружать исходный код вашего расширения непосредственно на Extensions Hub, вы указываете местоположение исходного кода, и Extension Hub загрузит его и скомпилирует расширение оттуда.
В настоящее время это означает размещение исходного кода вашего расширения в общедоступном репозитории GitHub.
Загрузка из проверенного источника имеет ряд преимуществ:
- Пользователи могут ознакомиться с исходным кодом конкретной версии расширения, которое будет установлено.
- Вы можете гарантировать, что будете загружать только то, что действительно хотите загрузить, а не, например, незавершенную работу или файлы, оставшиеся от разработки.
Рекомендуемый цикл разработки
Инструменты разработки Firebase Extensions поддерживают загрузку предварительных версий ваших расширений, что позволяет легко тестировать ваши расширения и процесс их установки в той же среде, в которой они будут в конечном итоге выпущены.
Эта возможность позволяет реализовать следующий цикл разработки:
Разрабатывайте и быстро совершенствуйте свои расширения с помощью Firebase Emulator Suite .
Протестируйте свое расширение в реальном проекте, установив его из локального источника:
firebase ext:install /path/to/extensionfirebase deploy --only extensionsЗагрузите предварительную версию в Extensions Hub (см. ниже). Распространите ссылку для установки для более широкого тестирования и, при необходимости, дорабатывайте, загружая новые предварительные версии.
Загрузите финальную, стабильную версию в Extensions Hub (см. ниже) и отправьте её на проверку. Если расширение пройдёт проверку, оно будет опубликовано в Extensions Hub.
Увеличьте номер версии в
extension.yamlи повторите этот цикл для следующей версии вашего расширения.
Загрузите новое расширение
Чтобы загрузить расширение в первый раз:
Необязательно : зафиксируйте свой код в общедоступном репозитории GitHub.
Выполните команду
ext:dev:uploadв Firebase CLI:GitHub
firebase ext:dev:upload your_publisher_id/your_extension_idМестный источник
cd /path/to/extensionfirebase ext:dev:upload your_publisher_id/your_extension_id --localПри вызове команды вы указываете следующее:
Идентификатор издателя, который вы зарегистрировали .
Идентификационная строка, которая будет определять расширение. Называйте свои расширения в следующем формате:
firebase-product - description-of-tasks-performed. Например:firestore-bigquery-export
Эта команда запросит у вас дополнительную информацию:
Если вы загружаете файлы с GitHub:
URL-адрес репозитория расширения в GitHub. Обратите внимание, что репозиторий может содержать несколько расширений, при условии, что каждое расширение имеет уникальный корневой каталог.
При первой загрузке нового расширения репозиторий будет зарегистрирован как канонический источник для вашего расширения.
Каталог в репозитории, содержащий ваше расширение.
Ссылка на коммит в Git, из которого вы хотите собрать исходный код версии вашего расширения. Это может быть хеш коммита, тег или имя ветки.
Этап выпуска загружаемой вами версии.
Этапы
alpha,betaиrc(release candidate) предназначены для загрузки предварительных версий, которые затем могут установить тестировщики. Используйте один из этих этапов для первоначальной загрузки нового расширения.stableверсия используется для публикации публичных релизов на Extensions Hub. Загрузкаstableверсии автоматически запускает проверку, и, если она пройдена успешно, расширение будет опубликовано.
Обратите внимание, что номер версии не указывается — это значение берется из файла
extension.yaml. При загрузке предварительной версии расширения номер этапа и номер загрузки добавляются к версии. Например, еслиextension.yamlуказана версия 1.0.1, и вы загружаете релиз-кандидат, это приведет к версии1.0.1-rc.0; загрузка другого релиз-кандидата той же версии автоматически увеличит счетчик, в результате чего получится1.0.1-rc.1, и так далее.
Теперь, когда вы загрузили предварительную версию расширения, вы можете поделиться ею с другими для тестирования. Пользователи могут установить ваше расширение двумя способами:
С помощью консоли : Пользователи могут установить расширение, перейдя по ссылке следующего формата:
https://console.firebase.google.com/project/_/extensions/install?ref=your_publisher_id/your_extension_id@version
Вы можете поделиться прямой ссылкой со своими тестировщиками.
С помощью CLI пользователи могут установить расширение, передав строку с идентификатором расширения команде
ext:install:firebase ext:install your_publisher_id/your_extension_id@version \ --project=destination_project_id
Загрузите обновленную версию
После загрузки первой версии расширения вы можете загружать обновления для исправления ошибок, добавления функций или продвижения этапа выпуска. При загрузке новой версии пользователям, у которых установлена более старая версия вашего расширения, в консоли Firebase будет предложено обновить её.
Чтобы загрузить обновление:
Необязательно : зафиксируйте свой код в общедоступном репозитории Git.
Выполните команду
ext:dev:uploadв Firebase CLI:GitHub
firebase ext:dev:upload your_publisher_id/your_extension_idНа этот раз вам не потребуется указывать репозиторий GitHub или корневой каталог расширения, поскольку они уже настроены для вашего расширения. Если вы впоследствии изменили структуру своего репозитория или перешли на новый репозиторий, вы можете изменить их с помощью аргументов команды
--rootи--repo.Местный источник
cd /path/to/extensionfirebase ext:dev:upload your_publisher_id/your_extension_id --local
Подайте заявку на продление срока публикации.
Когда вы будете готовы публично выпустить своё расширение:
Разместите свой код в общедоступном репозитории Git. (Обязательно для публичных релизов.)
Выполните команду
ext:dev:uploadв Firebase CLI, указавstableв качестве стадии выпуска:firebase ext:dev:upload your_publisher_id/your_extension_idЕсли вы ранее публиковали версию своего расширения, загрузка новой стабильной версии автоматически отправит расширение на проверку.
Если вы загрузили первую стабильную версию расширения, найдите его на панели управления издателя и нажмите «Опубликовать в Центре расширений» .
После отправки запрос на проверку может занять несколько дней. В случае одобрения расширение будет опубликовано в Extensions Hub. В случае отклонения вы получите сообщение с объяснением причины; после этого вы сможете устранить выявленные проблемы и повторно отправить запрос на проверку.
Чтобы ускорить проверку и повысить ваши шансы на успешную сдачу с первого раза, перед отправкой дважды проверьте следующее:
- Вы тщательно протестировали расширение и процесс установки.
- Ваша документация полная и корректная, и хорошо отображается в консоли Firebase.
- Название и фирменный стиль вашего издательства четко и точно идентифицируют вас как издателя.
- Название, описание и значок вашего расширения четко и точно отражают его назначение.
- Вы добавили полезные и точные теги.
- В
extension.yamlвы указали все используемые вами API от Google и сторонних разработчиков, а также все типы событий, которые генерирует ваше расширение. - Вы запрашиваете доступ только к тем ролям, которые необходимы для функционирования расширения, и четко объяснили пользователям, почему вам нужен такой доступ.
- Исходные файлы явно распространяются под лицензией
Apache-2.0.
Управление загруженными и опубликованными расширениями.
Перечислите загруженные вами расширения.
Чтобы отобразить список расширений, загруженных вами под вашим идентификатором издателя, выполните одно из следующих действий:
Панель управления издателя
Просмотрите их на панели управления издателя .
Firebase CLI
Выполните команду ext:dev:list :
firebase ext:dev:list your_publisher_idПросмотрите данные об использовании загруженных вами расширений.
Чтобы просмотреть использование расширений, загруженных вами под вашим идентификатором издателя, выполните одно из следующих действий:
Панель управления издателя
В панели управления издателя отображаются совокупные показатели использования всех ваших расширений, а также индивидуальные показатели для каждого расширения.
Firebase CLI
Выполните команду ext:dev:usage :
firebase ext:dev:usage your_publisher_idПриостановить поддержку одной из версий расширения
В какой-то момент вам может понадобиться прекратить поддержку старой версии вашего расширения. Например, если вы выпускаете новую версию, которая исправляет критическую ошибку или обновляет зависимость важным обновлением безопасности, важно предотвратить установку старой версии новыми пользователями и побудить существующих пользователей обновиться до более новой версии.
Чтобы объявить версию расширения устаревшей, выполните одно из следующих действий:
Панель управления издателя
- На панели управления издателя щелкните по расширению, чтобы открыть подробную информацию о нем.
- Выберите версию, которую хотите вывести из эксплуатации.
- Нажмите «Устаревшая версия» .
Firebase CLI
Выполните команду ext:dev:deprecate :
firebase ext:dev:deprecate your_publisher_id/your_extension_id versions \
[--message "deprecation_message"]Вы можете указать одну версию или диапазон версий. Примеры:
-
1.0.2 -
1.1.0-1.1.7 -
<1.2.0 -
1.1.*
Устаревшие версии расширения не отображаются в Центре расширений и не могут быть установлены. Пользователи, в проектах которых установлена устаревшая версия, увидят сообщение с предложением обновить её; тем временем они смогут продолжать использовать и перенастраивать расширение.
Если все версии расширения устарели, расширение считается устаревшим и будет удалено из Extensions Hub. Загрузка новой версии устаревшего расширения автоматически инициирует проверку, и после одобрения оно будет снова опубликовано в Extensions Hub.
Чтобы отменить устаревание, используйте панель управления издателя или выполните команду ext:dev:undeprecate в Firebase CLI:
firebase ext:dev:undeprecate your_publisher_id/your_extension_id versions
Приложение: Устранение ошибок сборки
После загрузки расширения серверная часть сначала компилирует исходный код, используя следующий процесс:
Клонирует ваш репозиторий GitHub и выполняет переключение на указанный исходный код.
Устанавливает зависимости NPM, запуская
npm clean-installв каждом каталоге исходных файлов функций, указанном вextension.yaml(см.sourceDirectoryв ресурсах Cloud Function ).Обратите внимание на следующее:
Для каждого файла
package.jsonдолжен существовать соответствующий файлpackage-lock.json. Дополнительную информацию см. в npm-ci .Скрипты, запускаемые после установки, не будут выполняться во время установки зависимостей. Если сборка вашего исходного кода зависит от скриптов, запускаемых после установки, проведите рефакторинг перед загрузкой.
Компилирует ваш код, запуская
npm run buildв каждой директории с исходным кодом функции, указанной вextension.yaml.
В итоговый пакет расширения, который будет предоставлен пользователям, будет сохранена только корневая директория вашего расширения.
Если при загрузке расширения возникают ошибки сборки, повторите описанные выше шаги сборки локально в новой директории, пока ошибки не исчезнут, а затем попробуйте загрузить расширение снова.