發布擴充功能

本頁介紹如何在擴充中心發布擴充功能。

在你開始之前

要發布擴展,首先您需要註冊為擴展發布者

可驗證的來源

在擴展中心發布的所有擴充功能都必須具有可公開驗證的來源。您無需將擴充原始碼直接上傳到 Extensions Hub,而是指定來源位置,Extension Hub 將下載它並從那裡建置它。

目前,這意味著讓您的擴充原始碼在公共 GitHub 儲存庫上可用。

從可驗證的來源上傳有幾個好處:

  • 使用者可以檢查將安裝的擴充功能的特定版本的原始程式碼。
  • 您可以確保僅上傳您想要上傳的內容,而不是例如正在進行的工作或開發中剩餘的雜散文件。

推薦開發週期

Firebase Extensions 開發工具支援上傳擴充功能的預發布版本,這讓您可以輕鬆地在最終發布擴充功能的相同環境中測試擴充功能和擴充功能安裝過程。

此功能使如下的開發週期成為可能:

  1. 使用Firebase 模擬器套件開發並快速迭代您的擴充功能。

  2. 透過從本地來源安裝它來在真實專案中測試您的擴充功能:

    firebase ext:install /path/to/extension
    firebase deploy --only extensions
    
  3. 將預發布版本上傳到擴充中心(見下文)。分發安裝連結以進行更廣泛的測試,並根據需要上傳更多預發布版本進行迭代。

  4. 將最終的穩定版本上傳到擴展中心(見下文)並提交以供審核。如果擴充通過審核,它將發佈在擴展中心。

  5. 增加extension.yaml中的版本號,並對擴充的下一個版本重複此循環。

上傳新擴充

首次上傳擴充功能:

  1. 可選:將程式碼提交到公共 GitHub 儲存庫。

  2. 執行 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。請注意,一個儲存庫可以包含多個擴展,只要每個擴展都有唯一的根。

        當您第一次上傳新擴充功能時,儲存庫將被註冊為您的擴充功能的規範來源。

      • 儲存庫中包含您的擴充功能的目錄。

      • 您想要從中建立擴展版本來源的提交的 Git 引用。這可以是提交哈希、標籤或分支名稱。

    • 您正在上傳的版本的發布階段。

      alphabetarc (候選發布)階段用於上傳預發布版本以供測試人員安裝。使用這些階段之一來初始上傳新擴充功能。

      stable階段用於在擴展中心發佈公共版本。上傳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 控制台會提示安裝了舊版擴充功能的使用者進行升級。

要上傳更新:

  1. 可選:將程式碼提交到公共 Git 儲存庫。

  2. 執行 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
    

提交發布延期

當您準備好公開發布您的擴充功能時:

  1. 將您的程式碼提交到公共 Git 儲存庫。 (公開發佈時需要。)

  2. 執行 Firebase CLI 的ext:dev:upload指令,指定stable為發佈階段:

    firebase ext:dev:upload your_publisher_id/your_extension_id
    
  3. 如果您之前發布了擴充功能的版本,則上傳新的穩定版本將自動提交擴充功能以供審核。

    如果您上傳了擴充功能的第一個穩定版本,請在發布者儀表板上找到該擴充程序,然後按一下「發佈到擴充中心」

提交後,審核可能需要幾天。如果接受,擴展將發佈到擴展中心。如果被拒絕,您將收到一條訊息解釋原因;然後,您可以解決報告的問題並重新提交以供審核。

為了加快審核速度並增加第一次通過的機會,請在提交之前仔細檢查以下內容:

  • 您已經徹底測試了您的擴充功能和安裝過程。
  • 您的文件完整且正確,並且在 Firebase 控制台中呈現良好。
  • 您的發布商名稱和品牌清晰準確地表明您是發布者。
  • 您的擴充功能的名稱、描述和圖示清楚、準確地代表了您的擴充功能的用途。
  • 您已經應用了有用且準確的標籤。
  • 您已在extension.yaml中聲明了您使用的所有 Google 和非 Google API,以及您的擴充功能所發出的所有事件類型。
  • 您僅請求存取擴充功能所需的角色,並且您已向使用者清楚地解釋了為什麼需要此類存取權限。
  • 您的來源檔案已明確取得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

棄用某個擴充版本

在某些時候,您可能想要棄用舊版本的擴充功能。例如,如果您發布的新版本修復了嚴重錯誤或使用重要的安全性更新更新了依賴項,則阻止新用戶安裝舊版本並鼓勵現有用戶升級非常重要。

若要棄用某個擴充版本,請執行下列其中一項操作:

發布者儀表板

  1. 發布者儀表板上,按一下擴充功能以開啟其詳細資訊檢視。
  2. 選擇您要棄用的版本。
  3. 點選棄用版本

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.*

已棄用的擴充版本不會在擴充中心列出,也無法安裝。其項目安裝了已棄用版本的用戶將看到一條鼓勵他們升級的訊息;同時他們仍然可以使用和重新配置擴充。

如果擴充的每個版本都已棄用,則該擴充將被視為已棄用,並將從擴充中心除名。上傳已棄用擴充功能的新版本將自動啟動審核,並在接受後再次將其發佈到擴充中心。

若要撤銷棄用,請使用發布者儀表板,或執行 Firebase CLI 的ext:dev:undeprecate指令:

firebase ext:dev:undeprecate your_publisher_id/your_extension_id versions

附錄:建構錯誤疑難解答

當您上傳擴充功能時,後端首先使用下列程序建立原始程式碼:

  1. 複製您的 GitHub 儲存庫並檢查指定的來源引用。

  2. 透過在extension.yaml中指定的每個函數來源目錄中執行npm clean-install來安裝 NPM 依賴項(請參閱Cloud Function 資源中的sourceDirectory )。

    請注意以下事項:

    • 每個package.json檔案必須有一個對應的package-lock.json檔案。有關更多信息,請參閱npm-ci

    • 安裝後腳本在依賴項安裝期間不會執行。如果您的原始程式碼建置依賴安裝後腳本,請在上傳之前重構它。

  3. 透過在extension.yaml中指定的每個函數來源目錄中執行npm run build來建立程式碼。

最終共享的擴充包中只會保存您的擴充功能的根目錄。

如果您在上傳擴充功能時遇到建置錯誤,請在本機新目錄中複製上述建置步驟,直到沒有錯誤,然後再次嘗試上傳。