Azure Developer CLI (azd) 擴充功能可新增指令、自動化工作流程,並整合其他服務。azd 本文說明了在建構擴充功能前你需要了解的概念,例如開發工具、軟體開發套件(SDK),以及如何 azd 與執行中的擴充套件溝通。 想從使用者角度了解擴充功能是什麼,請參閱 擴充功能概覽。
開發者擴充功能
建立擴充功能最快的方法就是使用 azd developer 擴充功能(microsoft.azd.extensions)。 開發者擴充功能在 azd x 命名空間下加入一套指令,用以支撐、建置、封包及發佈你的擴充功能:
| 命令 | Description |
|---|---|
azd x init |
用你選擇的語言搭建一個新的延伸專案。 |
azd x build |
建立供本機開發使用的擴充功能二進位檔。 |
azd x watch |
會監控專案是否有變動,並自動重建並安裝擴充功能。 |
azd x pack |
將擴充套件的產物打包以準備發佈。 |
azd x release |
為該擴充功能建立 GitHub 版本。 |
azd x publish |
更新擴充功能登錄檔,包含新的擴充功能元資料。 |
「建置範例擴充功能」快速入門會教你如何安裝開發者擴充功能並搭建第一個擴充功能。
開發者擴充套件支援基於登錄檔的發佈工作流程及可攜式套件發行。 使用 azd x pack 建立用於發行及發佈到登錄庫的平台成品,或在您需要分享擴充功能但無需架設登錄庫時,建立獨立的 .zip 套件。 套件可從本地檔案安裝,或遠端以 HTTPS URL 寄存。 如需逐步指引,請參閱 「發佈擴充功能」。
擴充框架與 gRPC
azd 擴充功能則以獨立程序形式運行,透過 gRPC 進行通訊。 當你呼叫擴充指令時,會進行以下步驟:
-
azd在隨機埠口啟動 gRPC 伺服器,並以伺服器位址設定AZD_SERVER環境變數。 -
azd設定AZD_ACCESS_TOKEN環境變數,這是一個簽署的 JSON Web Token(JWT),可授權擴充功能在指令存續期間存取azd服務。 -
azd呼叫你的擴充指令,並傳遞目前的參數、旗標和環境變數。 - 你的擴充套件會透過 gRPC 用戶端透過框架服務回傳
azd訊息,例如提示使用者或讀取專案設定。 -
azd等待指令完成後,將非零的退出代碼報告為錯誤。
此模型讓擴充功能能以一致且安全的方式與 azd 其互動,而不必直接存取內部 azd 狀態。
專案層級的擴充功能要求
專案可以在 azure.yaml 中宣告其所需的擴充功能。 利用該 requiredVersions.extensions 區列出擴充功能 ID 和版本限制,這樣 azd 可以解析符合專案需求的版本。
requiredVersions:
extensions:
azure.ai.agents: ">=1.0.0"
contoso.azd.tagger: "^2.0.0"
當專案依賴擴充套件提供的主機、提供者、生命週期處理程式、驗證或指令時,請宣告必要的擴充功能。 關於精確的架構與支援版本語法,請參見 requiredVersions。
The azdext SDK
這個 azdext 套件是擴充框架的 Go SDK。 它提供一個 gRPC 客戶端和幫手處理通訊細節,讓你能專注於擴充邏輯。 SDK 包含以下輔助工具:
- 建立一個根指令,登錄標準
azd旗標和環境變數處理。 - 將
azd存取權杖附加到送出的要求。 - 呼叫
azd框架服務,如 Project、Environment、Account 及 Prompt 服務。 - 透過
TelemetryService.ReportUsagegRPC API 回報官方來源擴充功能的具名使用事件。 關於 API 使用細節,請參見 「透過使用 SDK 與 azd 溝通」。 - 透過擴充主機登錄生命週期事件處理程式與自訂提供者。
想了解如何從你的擴充功能呼叫 azd 服務,請參考「 使用 SDK 與 azd 通訊」。
擴充功能
能力宣告擴充功能能做什麼。 在清單 extension.yaml 中列出擴充功能的能力,並在 azd 執行時授予相應權限。 可用功能包括:
-
custom-commands: 新增指令群組與指令至azd。 -
lifecycle-events:訂閱專案和服務生命週期事件,例如preprovision和postdeploy。 -
mcp-server:提供 AI 代理的模型情境協定(MCP)工具。 -
service-target-provider提供自訂服務部署目標。 -
framework-service-provider提供自訂語言與框架建置支援。 -
provisioning-provider提供客製化基礎設施配置體驗。 -
validation-provider:將驗證檢查加入azd驗證管線。 -
metadata提供豐富的指令與配置元資料,協助輸出及 IntelliSense。
想了解如何為擴充功能添加功能,請參見 「新增擴充功能」。
支援的語言
你可以在任何支援 gRPC 的語言中建立 azd 擴充,並且 azd x init 包含多種語言的入門範本。 Go 提供最完整的支援,包括一流的 azdext SDK 輔助工具,因此本節文章所有範例皆使用 Go。
| 語言 | 支援層級 |
|---|---|
| Go | 最優質的支援與一流的 SDK 助手。 |
| .NET (C#) | 與入門範本緊密整合。 |
| Python | 可與入門範本良好整合。 |
| JavaScript | 使用入門範本進行基本整合。 |
對於非 Go 語言撰寫的擴充功能,你可以從倉庫中的 azure/azure-dev產生 gRPC 用戶端。 關於目前語言支援的狀態,請參閱上游 擴充框架文件。
擴充功能登錄檔
你透過登錄檔來源或擴充套件來分發擴充功能。 登錄來源是以 URL 或檔案為基礎的資訊清單,用來描述可用的擴充功能及其成品。 擴充套件是可攜式 .zip 套件,你可以直接從本地檔案安裝,或在不想架設登錄檔時遠端以 HTTPS URL 架設。
-
官方登錄庫已在
azd中預先設定,並提供經過審核的第一方擴充功能。 官方擴充功能是在 azure/azure-dev 存放庫的分支版本中開發的。 - 基於 URL 的來源 允許你從遠端的公開或私有登錄清單安裝。
- 基於檔案的原始碼 允許你從本地登錄清單安裝,用於開發、測試或離線場景。
- 開發與夜間登錄來源是需自行選用的來源,用於提供開發中的內容以及自動建置的第一方擴充功能。 開發者登錄檔中的擴充功能未簽名,不在 Azure 支援 支援範圍內,且可能在不另行通知的情況下更改或移除。
欲了解如何發布登錄檔的延伸,請參閱「發布延伸」。