快速入門:建置範例 azd 擴充功能

在這個快速入門中,你會建立一個名為 Contoso Resource Tagger 的 Azure Developer CLI (azd) 擴充套件範例。 你用 azd 開發者擴充功能來架構 Go 專案,新增自訂指令,然後在本地執行擴充功能。 你所建立的範例擴充功能是本節其他文章的起點,這些文章會教你如何新增功能、與 MCP 通訊 azd、新增模型情境協定(MCP)伺服器,以及發佈你的作品。

想在開始前了解擴充開發背後的概念,請參閱 擴充開發概念。

Note

azd擴充框架已普遍提供。 個別擴充功能或功能可能有自己的預覽狀態。

先決條件

azd 預設包含官方擴充套件來源。 你也可以安裝基於 URL 或檔案的擴充功能、本地開發登錄、選擇加入的開發或夜間登錄檔,以及可攜式 .zip 套件。 詳情請參見 擴充開發概念。

小提示

若專案 azd 依賴擴充套件提供的主機、提供者、驗證、生命週期處理器或指令,請在這些擴充 azure.yaml 功能中宣告並設定版本限制。 如需詳細資訊,請參閱 requiredVersions。

安裝開發者擴充功能

azd開發人員擴充功能(microsoft.azd.extensions)提供你用來建置擴充功能的 azd x 指令。

  1. 從官方擴充套件來源安裝開發者擴充功能:

    azd extension install microsoft.azd.extensions
    
  2. 確認擴充功能已安裝:

    azd extension list --installed
    

    開發者擴充功能會在命名空間下 x 註冊一組指令。 執行 azd x 以查看可用的指令。

建立範例擴充功能的基本架構

使用 azd x init 指令來搭建新的擴充專案。

  1. 建立一個用於存放擴充功能的目錄,並切換至該目錄:

    mkdir azd-extensions
    cd azd-extensions
    
  2. 初始化一個 git 倉庫並建立初始提交。 此 azd x init 指令要求 git 追蹤副檔名資料夾:

    git init
    git commit --allow-empty -m "Initial commit"
    
  3. 執行 azd x init 指令來建立擴充功能的基本架構:

    azd x init
    
  4. 當被要求時,請提供以下數值:

    提示 Value
    擴充套件識別碼 contoso.azd.tagger
    顯示名稱 Contoso Resource Tagger
    Description Standardize and report Azure resource tags for an azd project.
    命名空間 tagger
    能力 Custom commands
    語言 Go

指令架構擴充功能,建立初始二進位檔,打包擴充功能,發佈至本地擴充套件原始碼,並在本地安裝以便立即使用。

探索專案結構

此 azd x init 指令會產生包含以下鍵檔的專案:

contoso.azd.tagger/
├── bin/                    # Contains built binaries
├── build.ps1               # Windows build script
├── build.sh                # Unix build script
├── CHANGELOG.md            # Version history and release notes
├── extension.yaml          # Extension metadata and capabilities
├── main.go                 # Entry point for the extension
├── go.mod                  # Go module definition
└── internal/               # Internal implementation code

最重要的檔案包括:

  • extension.yaml定義了擴充功能的元資料、能力與指令。 欲了解更多,請參閱 定義擴充清單。
  • main.go: 就是執行你擴充套件根指令的入口點。
  • build.sh以及build.ps1:跨平台建置腳本,為每個支援平台(Linux、Windows 和 macOS)編譯獨立的二進位檔。
  • CHANGELOG.md: 文件會在不同版本間變動,並在發佈時提供發布說明。

新增自訂指令

新增一個會輸出問候訊息的 show 指令,以確認你的擴充功能可正常運作。 具體的檔案配置取決於起始範本,但模式相同:定義一個 Cobra 指令,並在根指令上註冊。

  1. 在目錄 internal/cmd 中建立一個名為 show.go 以下內容的檔案:

    package cmd
    
    import (
        "fmt"
    
        "github.com/spf13/cobra"
    )
    
    func newShowCommand() *cobra.Command {
        return &cobra.Command{
            Use:   "show",
            Short: "Displays a greeting from the Contoso Resource Tagger extension.",
            RunE: func(cmd *cobra.Command, args []string) error {
                fmt.Println("Hello from the Contoso Resource Tagger extension!")
                return nil
            },
        }
    }
    
  2. 在根命令上註冊該命令。 在 internal/cmd/root.go 檔案中,請在其他 AddCommand 函式後面,往底部加上以下一行:

    rootCmd.AddCommand(newShowCommand())
    

執行延伸模組

在執行擴充功能前,先打包並發佈到你本地的擴充套件來源,以便註冊你的變更。

  1. 打包擴充功能:

    azd x pack
    
  2. 發佈擴充功能以完成註冊:

    azd x publish
    
  3. 執行你的新指令:

    azd tagger show
    

    輸出類似下列範例:

    Hello from the Contoso Resource Tagger extension!
    

你現在已有一個可運作的擴充功能,可以在此基礎上繼續開發。

開發過程中注意變化

與其在每次變更後手動執行 azd x pack 和 azd x publish,不如使用 azd x watch,在開發過程中自動建置並安裝擴充功能。

  1. 從擴充目錄中啟動監視器:

    azd x watch
    
  2. 在第二個終端機中,執行你的指令,在做變更時測試:

    azd tagger show
    

若要手動建立擴充功能,而不是使用監視器,請執行 azd x build。

清理資源

實驗結束後,請卸載範例擴充功能:

azd extension uninstall contoso.azd.tagger

若要繼續擴展範例,請參閱以下文章。 每篇文章都是獨立的,所以你可以以任意順序完成: