Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
CLI do Desenvolvedor do Azure (azd) extensões adicionam novos comandos, automatizam fluxos de trabalho e integram outros serviços com azd. Este artigo explica os conceitos que você precisa entender antes de criar uma extensão, como as ferramentas de desenvolvedor, o SDK (software development kit) e como azd se comunica com uma extensão em execução. Para saber quais extensões são da perspectiva do usuário, confira a visão geral das extensões.
A extensão do desenvolvedor
A maneira mais rápida de criar extensões é usar a extensão de azd desenvolvedor (microsoft.azd.extensions). A extensão de desenvolvedor adiciona um conjunto de comandos no namespace azd x que criam a estrutura, compilam, empacotam e publicam sua extensão:
| Command | Description |
|---|---|
azd x init |
Cria a estrutura de um novo projeto de extensão na linguagem de sua escolha. |
azd x build |
Cria o binário de extensão para desenvolvimento local. |
azd x watch |
Observa o projeto para alterações e recria e instala automaticamente a extensão. |
azd x pack |
Empacota os artefatos da extensão para prepará-los para publicação. |
azd x release |
Cria uma versão GitHub para a extensão. |
azd x publish |
Atualiza um registro de extensão com os novos metadados de extensão. |
O início rápido Criar uma extensão de exemplo mostra como instalar a extensão para desenvolvedor e criar a estrutura inicial da sua primeira extensão.
A extensão do desenvolvedor oferece suporte a fluxos de trabalho de publicação baseados em registro central e à distribuição de pacotes portáteis. Use azd x pack para criar artefatos de plataforma para publicação de versão e registro ou crie um pacote .zip autocontido quando precisar compartilhar uma extensão sem hospedar um registro. Os pacotes podem ser instalados de um arquivo local ou hospedados remotamente em uma URL HTTPS. Para obter diretrizes passo a passo, consulte Publicar uma extensão.
O framework de extensão e o gRPC
azd e as extensões são executadas como processos separados que se comunicam por meio de gRPC. Quando você invoca um comando de extensão, as seguintes etapas ocorrem:
-
azdinicia um servidor gRPC em uma porta aleatória e define a variável deAZD_SERVERambiente com o endereço do servidor. -
azddefine aAZD_ACCESS_TOKENvariável de ambiente, que é um JWT (Token Web JSON) assinado que concede acesso de extensão aosazdserviços durante o tempo de vida do comando. -
azdinvoca o comando de extensão e passa os argumentos, sinalizadores e variáveis de ambiente atuais. - Sua extensão usa um cliente gRPC para se comunicar com
azdpor meio dos serviços do framework, como solicitar informações ao usuário ou ler a configuração do projeto. -
azdaguarda a conclusão do comando e relata um código de saída diferente de zero como um erro.
Esse modelo permite que as extensões interajam azd de forma consistente e segura sem acessar diretamente o estado interno azd .
Requisitos de extensão no nível do projeto
Os projetos podem declarar as extensões necessárias em azure.yaml. Use a requiredVersions.extensions seção para listar IDs de extensão e restrições de versão para azd resolver as versões que atendem ao projeto.
requiredVersions:
extensions:
azure.ai.agents: ">=1.0.0"
contoso.azd.tagger: "^2.0.0"
Declare as extensões necessárias quando um projeto depende de hosts, provedores, manipuladores de ciclo de vida, validação ou comandos fornecidos por extensão. Para obter o esquema exato e a sintaxe de versão com suporte, consulte requiredVersions.
O SDK do azdext
O azdext pacote é o SDK do Go para a estrutura de extensão. Ele fornece um cliente gRPC e auxiliares que lidam com os detalhes de comunicação, para que você possa se concentrar em sua lógica de extensão. O SDK inclui auxiliares para:
- Crie um comando raiz que registre os sinalizadores padrão
azde a manipulação da variável de ambiente. - Anexe o
azdtoken de acesso às requisições de saída. - Chame os serviços do framework
azd, como os serviços Projeto, Ambiente, Conta e Prompt. - Relatar eventos de uso nomeados por meio da
TelemetryService.ReportUsageAPI gRPC para extensões de origem oficial. Para obter detalhes de uso da API, consulte Comunicar-se com o azd usando o SDK. - Registre manipuladores de eventos do ciclo de vida e provedores personalizados por meio de um host de extensão.
Para aprender a chamar serviços azd da sua extensão, consulte Comunicar-se com o azd usando o SDK.
Funcionalidades de extensão
As capacidades declaram o que uma extensão pode fazer. Liste as capacidades de uma extensão no extension.yaml manifesto, e azd concede as permissões correspondentes em tempo de execução. Os recursos disponíveis incluem:
-
custom-commands: adicione novos grupos de comandos e comandos aazd. -
lifecycle-events: Assinar os eventos de ciclo de vida do projeto e do serviço, comopreprovisionepostdeploy. -
mcp-server: forneça ferramentas do PROTOCOLO MCP (Model Context Protocol) para agentes de IA. -
service-target-provider: forneça destinos de implantação de serviço personalizado. -
framework-service-provider: Fornecer suporte a builds para linguagens e frameworks personalizados. -
provisioning-provider: forneça uma experiência de provisionamento de infraestrutura personalizada. -
validation-provider: Contribuir com verificações de validação para o pipeline de validaçãoazd. -
metadata: Fornecer metadados ricos de comando e configuração para a saída de ajuda e o IntelliSense.
Para saber como adicionar recursos a uma extensão, consulte Adicionar recursos de extensão.
Idiomas com suporte
Você pode criar azd extensões em qualquer idioma que dê suporte a gRPC e azd x init inclui modelos de início para vários idiomas. O Go tem o suporte mais completo, incluindo auxiliares do SDK de primeira classe azdext , portanto, os artigos nesta seção usam o Go para todos os exemplos.
| Linguagem | Nível de suporte |
|---|---|
| Go | O melhor suporte e excelentes ferramentas auxiliares do SDK. |
| .NET (C#) | Integração forte com um modelo inicial. |
| Python | Boa integração com um template inicial. |
| JavaScript | Integração básica com um modelo inicial. |
Para extensões desenvolvidas em linguagens diferentes de Go, você pode gerar clientes gRPC a partir dos arquivos proto no repositório azure/azure-dev. Para consultar o estado atual do suporte a idiomas, consulte a documentação upstream do framework de extensão.
Registros de extensões
Você distribui extensões por meio de fontes de registro ou pacotes de extensão. As fontes do Registro são manifestos baseados em URL ou baseados em arquivo que descrevem extensões disponíveis e seus artefatos. Os pacotes de extensão são pacotes portáteis .zip que você pode instalar diretamente de um arquivo local ou hospedar remotamente em uma URL HTTPS quando não quiser hospedar um registro.
- O registro oficial vem pré-configurado em
azde hospeda extensões validadas e oficiais. As extensões oficiais são desenvolvidas em uma bifurcação do repositório azure/azure-dev . - As fontes baseadas em URL permitem que você instale de manifestos de registro públicos ou privados remotos.
- Fontes baseadas em arquivo permitem instalar a partir de manifestos de registro local para cenários de desenvolvimento, teste ou sem conexão.
- Os repositórios de desenvolvimento e noturnos são fontes opcionais para conteúdo em desenvolvimento e extensões oficiais compiladas automaticamente. As extensões no registro de desenvolvimento não são atribuídas, não cobertas por Suporte do Azure e podem ser alteradas ou removidas sem aviso prévio.
Para saber como publicar uma extensão em um registro, consulte Publicar uma extensão.