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