На этой странице объясняется, как опубликовать расширение в Extensions Hub.
Прежде чем начать
Чтобы опубликовать расширение, сначала вам необходимо зарегистрироваться в качестве издателя расширений .
Поддающиеся проверке источники
Все расширения, опубликованные в Extensions Hub, должны иметь общедоступный источник. Вместо того, чтобы загружать исходный код расширения непосредственно в Extensions Hub, вы указываете местоположение источника, и Extension Hub загрузит его и соберет оттуда.
В настоящее время это означает, что исходный код вашего расширения будет доступен в общедоступном репозитории GitHub.
Загрузка из проверенного источника имеет ряд преимуществ:
- Пользователи могут проверить исходный код конкретной версии расширения, которое будет установлено.
- Вы можете быть уверены, что загружаете только то, что собираетесь загрузить, а не, например, незавершенную работу или случайные файлы, оставшиеся от разработки.
Рекомендуемый цикл разработки
Инструменты разработки расширений Firebase поддерживают загрузку предварительных версий ваших расширений, что упрощает тестирование ваших расширений и процесс установки расширений в той же среде, в которой они в конечном итоге будут выпущены.
Эта возможность делает возможным цикл разработки, подобный следующему:
Разрабатывайте и быстро совершенствуйте свое расширение с помощью Firebase Emulator Suite .
Проверьте свое расширение в реальном проекте, установив его из локального источника:
firebase ext:install /path/to/extension
firebase deploy --only extensions
Загрузите предварительную версию в Extensions Hub (см. ниже). Распространите ссылку на установку для более широкого тестирования и при необходимости загружайте дополнительные предварительные версии.
Загрузите окончательную стабильную версию в Extension Hub (см. ниже) и отправьте ее на рассмотрение. Если расширение пройдет проверку, оно будет опубликовано в Extension Hub.
Увеличьте номер версии в
extension.yaml
и повторите этот цикл для следующей версии вашего расширения.
Загрузите новое расширение
Чтобы загрузить расширение в первый раз:
Необязательно : зафиксируйте свой код в общедоступном репозитории GitHub.
Запустите команду
ext:dev:upload
интерфейсе командной строки Firebase:GitHub
firebase ext:dev:upload your_publisher_id/your_extension_id
Местный источник
cd /path/to/extension
firebase 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
(кандидат на выпуск) предназначены для загрузки предварительных версий для установки тестировщиками. Используйте один из этих этапов для первоначальной загрузки нового расширения.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:GitHub
firebase ext:dev:upload your_publisher_id/your_extension_id
На этот раз вам не будет предложено указать репозиторий GitHub или корневой каталог расширения, поскольку они уже настроены для вашего расширения. Если с тех пор вы провели рефакторинг структуры своего репозитория или перешли в новый репозиторий, вы можете изменить их с помощью аргументов команды
--root
и--repo
.Местный источник
cd /path/to/extension
firebase ext:dev:upload your_publisher_id/your_extension_id --local
Отправьте расширение для публикации
Когда вы будете готовы опубликовать свое расширение:
Зафиксируйте свой код в общедоступном репозитории Git. (Требуется для общедоступных выпусков.)
Запустите команду
ext:dev:upload
в интерфейсе командной строки Firebase, указав в качестве стадии выпускаstable
:firebase ext:dev:upload your_publisher_id/your_extension_id
Если вы ранее публиковали версию своего расширения, при загрузке новой стабильной версии расширение автоматически будет отправлено на рассмотрение.
Если вы загрузили первую стабильную версию расширения, найдите расширение на панели управления издателя и нажмите «Опубликовать в Extensions Hub» .
После отправки рассмотрение может занять несколько дней. В случае принятия расширение будет опубликовано в Extensions Hub. В случае отклонения вы получите сообщение с объяснением причины; после этого вы сможете устранить обнаруженные проблемы и повторно отправить их на рассмотрение.
Чтобы ускорить рассмотрение и повысить свои шансы пройти проверку с первой попытки, перед отправкой дважды проверьте следующее:
- Вы тщательно протестировали свое расширение и процесс установки.
- Ваша документация полная и правильная и хорошо отображается в консоли Firebase.
- Ваше имя издателя и брендинг четко и точно идентифицируют вас как издателя.
- Имя, описание и значок вашего расширения четко и точно отражают его назначение.
- Вы применили полезные и точные теги.
- В
extension.yaml
вы указали все используемые вами API Google и сторонних разработчиков, а также все типы событий, которые генерирует ваше расширение. - Вы запрашиваете доступ только к тем ролям, которые необходимы для работы расширения, и четко объяснили пользователям, зачем вам такой доступ.
- Ваши исходные файлы явно лицензируются в соответствии с условиями
Apache-2.0
.
Управление загруженными и опубликованными расширениями
Перечислите загруженные вами расширения
Чтобы просмотреть расширения, которые вы загрузили под своим идентификатором издателя, выполните одно из следующих действий:
Панель издателя
Просмотрите их на панели издателя .
Интерфейс командной строки Firebase
Запустите команду ext:dev:list
:
firebase ext:dev:list your_publisher_id
Просмотр использования загруженных расширений
Чтобы просмотреть использование расширений, которые вы загрузили под своим идентификатором издателя, выполните одно из следующих действий:
Панель издателя
На панели издателя есть совокупные показатели использования для всех ваших расширений и отдельные показатели для каждого расширения.
Интерфейс командной строки Firebase
Запустите команду ext:dev:usage
:
firebase ext:dev:usage your_publisher_id
Устареть версии расширения
В какой-то момент вы можете захотеть объявить устаревшую версию вашего расширения. Например, если вы выпускаете новую версию, которая исправляет критическую ошибку или обновляет зависимость важным обновлением безопасности, важно не допустить установки старой версии новыми пользователями и побудить существующих пользователей выполнить обновление.
Чтобы объявить версию расширения устаревшей, выполните одно из следующих действий:
Панель издателя
- На панели издателя нажмите расширение, чтобы открыть его подробную информацию.
- Выберите версию, которую вы хотите объявить устаревшей.
- Нажмите Устаревшая версия .
Интерфейс командной строки Firebase
Запустите команду 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. При загрузке новой версии устаревшего расширения автоматически инициируется проверка, а после принятия она снова публикуется в Extension Hub.
Чтобы отменить прекращение поддержки, используйте панель издателя или запустите команду ext:dev:undeprecate
в интерфейсе командной строки Firebase:
firebase ext:dev:undeprecate your_publisher_id/your_extension_id versions
Приложение: Устранение ошибок сборки
Когда вы загружаете расширение, серверная часть сначала создает исходный код, используя следующий процесс:
Клонирует ваш репозиторий GitHub и извлекает указанную ссылку на источник.
Устанавливает зависимости NPM, запуская
npm clean-install
в каждом исходном каталоге функции, указанном вextension.yaml
(см.sourceDirectory
в ресурсах облачной функции ).Обратите внимание на следующее:
Каждому файлу
package.json
должен соответствовать соответствующий файлpackage-lock.json
. Для получения дополнительной информации см. npm-ci .Сценарии после установки не будут запускаться во время установки зависимостей. Если ваша сборка исходного кода основана на сценариях, выполняемых после установки, проведите ее рефакторинг перед загрузкой.
Собирает ваш код, запуская
npm run build
в каждом исходном каталоге функции, указанном вextension.yaml
.
В окончательном пакете расширения, к которому будет предоставлен общий доступ, будет сохранен только корневой каталог вашего расширения.
Если при загрузке расширения вы получаете ошибки сборки, повторите описанные выше шаги сборки локально в новом каталоге, пока ошибок не будет, а затем повторите попытку загрузки.