このページでは、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 リポジトリにコードを commit します。
Firebase CLI の
ext:dev:upload
コマンドを実行します。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
コマンド呼び出しで、次のものを指定します。
登録したパブリッシャー ID。
拡張機能を識別する ID 文字列。拡張機能の名前は、
firebase-product-description-of-tasks-performed
という形式します。例:firestore-bigquery-export
このコマンドを実行すると、追加情報の入力を求められます。
GitHub からアップロードする場合:
GitHub にある拡張機能のリポジトリの URL。それぞれの拡張機能に固有のルートがあれば、リポジトリに複数の拡張機能を追加できます。
新しい拡張機能を初めてアップロードする場合、そのリポジトリが拡張機能の正規のソースとして登録されます。
拡張機能が存在するリポジトリのディレクトリ。
拡張機能バージョンのソースをビルドする commit の Git リファレンス。commit ハッシュ、タグ、ブランチ名を指定できます。
アップロードするバージョンのリリース ステージ。
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 を使用: 拡張機能 ID の文字列を
ext:install
コマンドに渡すことで、拡張機能をインストールできます。firebase ext:install your_publisher_id/your_extension_id@version \ --project=destination_project_id
更新されたバージョンをアップロードする
拡張機能の最初のバージョンをアップロードした後、さらに更新をアップロードして修正、機能の追加、次のリリース ステージへの移動を行うことができます。新しいバージョンをアップロードすると、古いバージョンの拡張機能がインストールされているユーザーの Firebase コンソールにプロンプトが表示され、アップグレードが求められます。
更新をアップロードするには:
省略可: 公開 Git リポジトリにコードを commit します。
Firebase CLI の
ext:dev:upload
コマンドを実行します。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 リポジトリにコードを commit します(公開リリースの場合は必須)。
リリース ステージに
stable
を指定して、Firebase CLI のext:dev:upload
コマンドを実行します。firebase ext:dev:upload your_publisher_id/your_extension_id
以前に拡張機能のバージョンを公開したことがある場合は、新しい安定版リリースをアップロードすると、審査のために拡張機能が自動的に送信されます。
拡張機能の最初の安定版リリースをアップロードした場合は、パブリッシャー ダッシュボードで拡張機能を探して、[Extensions Hub で公開] をクリックします。
送信後、審査に数日かかることがあります。承認されると、拡張機能が Extensions Hub に公開されます。拒否された場合は、その理由を説明するメッセージが届きます。報告された問題を解決して再度審査を依頼できます。
審査をスムーズに進めて、最初の審査で合格する可能性を高めるには、送信前に次の点を確認してください。
- 拡張機能とインストール プロセスを十分にテストしている。
- ドキュメントが完全かつ正確で、Firebase コンソールで適切にレンダリングされている。
- パブリッシャーの名前とブランディングが、パブリッシャーであることを明確かつ正確に表している。
- 拡張機能の名前、説明、アイコンが拡張機能の目的を明確かつ正確に表している。
- 正確で役立つタグを設定している。
- 使用するすべての Google API と Google 以外の API、拡張機能が出力するすべてのイベントタイプが
extension.yaml
で宣言されている。 - 拡張機能が機能するために必要なロールのみへのアクセス権を要求し、そのようなアクセスが必要な理由をユーザーに明確に説明している。
Apache-2.0
の条件に基づいてソースファイルに明示的にライセンスが付与されている。
アップロードされて公開された拡張機能を管理する
アップロードされた拡張機能の一覧を表示する
自社のパブリッシャー ID でアップロードした拡張機能のリストを表示するには、次のいずれかを行います。
パブリッシャー ダッシュボード
パブリッシャー ダッシュボードで表示します。
Firebase CLI
ext:dev:list
コマンドを実行します。
firebase ext:dev:list your_publisher_id
アップロードされた拡張機能の使用状況を確認する
自社のパブリッシャー 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 つのバージョンを指定することも、バージョンの範囲を指定することもできます。例:
1.0.2
1.1.0-1.1.7
<1.2.0
1.1.*
非推奨の拡張機能は Extensions Hub に表示されないため、インストールできません。プロジェクトに非推奨のバージョンがインストールされているユーザーには、アップグレードを促すメッセージが表示されます。その間も、その拡張機能を引き続き使用したり、再構成したりできます。
拡張機能のすべてのバージョンが非推奨になると、その拡張機能は非推奨となり、Extensions Hub から除外されます。非推奨の拡張機能の新しいバージョンをアップロードすると、自動的に審査が開始します。承認されると Extensions Hub に再度公開されます。
非推奨を解除するには、パブリッシャー ダッシュボードを使用するか、Firebase CLI の ext:dev:undeprecate
コマンドを実行します。
firebase ext:dev:undeprecate your_publisher_id/your_extension_id versions
付録: ビルドエラーのトラブルシューティング
拡張機能をアップロードすると、バックエンドが次のプロセスでソースコードをビルドします。
GitHub リポジトリのクローンを作成し、指定されたソース参照を確認します。
extension.yaml
に指定されたすべての関数のソース ディレクトリでnpm clean-install
を実行し、NPM の依存関係をインストールします(Cloud Functions のリソースのsourceDirectory
を参照)。次の点にご注意ください。
各
package.json
ファイルに対応するpackage-lock.json
ファイルが必要です。詳細については、npm-ci をご覧ください。依存関係のインストール中は、インストール後のスクリプトは実行されません。ソースコードのビルドがインストール後のスクリプトに依存している場合は、アップロードの前にリファクタリングします。
extension.yaml
に指定されたすべての関数のソース ディレクトリでnpm run build
を実行して、コードをビルドします。
共有される最終的な拡張機能パッケージには、拡張機能のルート ディレクトリのみが保存されます。
拡張機能のアップロード中にビルドエラーが発生した場合は、エラーがなくなるまで、上記のビルドステップをローカルの新しいディレクトリに複製し、その後、もう一度アップロードを試してください。