Het extensiemanifest definiëren

Elke Azure Developer CLI-extensie (azd) bevat een extension.yaml manifest dat de metagegevens en mogelijkheden beschrijft. azd gebruikt deze metagegevens in het extensieregister om gebruikers te helpen bij het detecteren, installeren en begrijpen van uw extensie. In dit artikel worden de manifesteigenschappen uitgelegd met behulp van de voorbeeldextensie Contoso Resource Tagger uit de quickstart een voorbeeldextensie bouwen. U kunt dezelfde concepten toepassen op elke extensie.

Opmerking

azd extensies zijn momenteel beschikbaar in de bètaversie.

Manifesteigenschappen

Het extension.yaml manifest ondersteunt de volgende eigenschappen.

Vereiste eigenschappen

Elk manifest moet de volgende eigenschappen bevatten:

Property Description
id Unieke id voor de extensie, zoals contoso.azd.tagger.
version Semantische versienummering in de notatie MAJOR.MINOR.PATCH.
displayName Leesbare naam van de extensie.
description Gedetailleerde beschrijving van de extensie.

Elk manifest moet ook ofwel capabilities of dependencies bevatten. Een extensie die opdrachten of providers declareert, bevat capabilities. Een uitbreidingspakket geeft in plaats daarvan dependencies op.

Optionele eigenschappen

Het manifest ondersteunt ook de volgende optionele eigenschappen:

Property Description
namespace Opdrachtnaamruimte die de opdrachten van de extensie groepeert, zoals tagger.
entryPoint Uitvoerbaar bestand of script dat fungeert als het toegangspunt.
language Programmeertaal waarin de extensie is geschreven, zoals go.
capabilities Matrix met uitbreidingsmogelijkheden.
usage Instructies voor het gebruik van de extensie.
examples Matrix van gebruiksvoorbeelden met een naam, beschrijving en gebruik.
tags Trefwoorden voor categorisatie en filtering.
dependencies Andere extensies waarvan deze extensie afhankelijk is.
providers Lijst met providers die de extensie registreert.
platforms Platformspecifieke metagegevens.
mcp Configuratie van modelcontextprotocolserver.
requiredAzdVersion Semantische versiebeperking voor de azd versie die is vereist voor het gebruik van de extensie, zoals >= 1.24.0.

Voorbeeldmanifest

In het volgende voorbeeld ziet u een extension.yaml manifest voor de voorbeeldextensie Contoso Resource Tagger:

# yaml-language-server: $schema=https://raw.githubusercontent.com/Azure/azure-dev/refs/heads/main/cli/azd/extensions/extension.schema.json

id: contoso.azd.tagger
namespace: tagger
displayName: Contoso Resource Tagger
description: Standardize and report Azure resource tags for an azd project.
usage: azd tagger <command> [options]
version: 0.1.0
language: go
capabilities:
  - custom-commands

examples:
  - name: show
    description: Displays a greeting from the extension.
    usage: azd tagger show

tags:
  - tags
  - governance
  - example

De $schema opmerking bovenaan het bestand maakt validatie en IntelliSense mogelijk in editors die ondersteuning bieden voor de YAML-taalserver.

Mogelijkheden declareren

De capabilities matrix declareert wat uw extensie kan doen. azd verleent de bijbehorende machtigingen tijdens runtime en sommige frameworkservices mislukken met een machtigingsfout als de overeenkomende mogelijkheid niet is gedeclareerd. De voorbeeldextensie begint met alleen custom-commands:

capabilities:
  - custom-commands

Wanneer u functionaliteit toevoegt in de andere artikelen, voegt u meer mogelijkheden toe. Voeg bijvoorbeeld uitbreidingsmogelijkheden toelifecycle-eventsen voeg een MCP-server toe aan een extensie.mcp-server De beschikbare mogelijkheden zijn:

  • custom-commands: Voeg nieuwe opdrachten toe aan azd onder uw naamruimte, zoals azd tagger show.
  • lifecycle-events: Voer aangepaste logica uit wanneer azd gebeurtenissen worden gegenereerd zoals preprovision of postdeploy.
  • mcp-server: Stel hulpprogramma's voor modelcontextprotocol beschikbaar die AI-agents kunnen aanroepen.
  • service-target-provider: Voeg een aangepast implementatiedoel toe voor een host doel dat azd standaard niet wordt ondersteund.
  • framework-service-provider: Voeg build- en pakketondersteuning toe voor een language die azd standaard niet herkent.
  • provisioning-provider: Vervang de azd inrichting van infrastructuur door een aangepaste implementatie.
  • validation-provider: Voeg controles toe die worden uitgevoerd in de azd validatiepijplijn.
  • metadata: Geef uitgebreidere opdracht- en configuratiemetagegevens op voor help-uitvoer en IntelliSense.

Zie Uitbreidingsmogelijkheden toevoegen voor een uitgebreidere uitleg van elke mogelijkheid met voorbeelden.

Gebruiksvoorbeelden toevoegen

De examples matrixdocumenten zijn veelgebruikte manieren om uw extensie te gebruiken. azd geeft deze voorbeelden weer wanneer gebruikers details over uw extensie bekijken:

examples:
  - name: show
    description: Displays a greeting from the extension.
    usage: azd tagger show

Providers registreren

Wanneer uw extensie aangepaste servicedoelen of frameworkservices biedt, declareert u deze in de providers sectie zodat azd u weet wat uw extensie biedt:

providers:
  - name: tagger
    type: service-target
    description: Deploys tagged resources to Azure.

Platformspecifieke configuratie toevoegen

Gebruik de platforms eigenschap om platformspecifieke metagegevens op te geven, zoals de naam van het uitvoerbare bestand voor elk besturingssysteem.

platforms:
  windows:
    executable: tagger.exe
  linux:
    executable: tagger
  darwin:
    executable: tagger

Afhankelijkheden declareren

Extensies kunnen afhankelijk zijn van andere extensies met behulp van de dependencies matrix. Afhankelijkheden ondersteunen semantische versiebeheerbeperkingen:

dependencies:
  - id: microsoft.azd.core
    version: "^1.0.0"

azd installeert of upgradet naar de hoogste gepubliceerde versie die voldoet aan elke beperking. Veelgebruikte beperkingsindelingen zijn:

  • ^1.0.0: Compatibel met versie 1.x.x.
  • ~1.2.0: Compatibel met versie 1.2.x.
  • >=1.0.0 <2.0.0: Een versiebereik.

Extensies groeperen met extensiepakketten

Een uitbreidingspakket is een manifest dat gerelateerde extensies groepeert, zodat gebruikers ze met één opdracht kunnen installeren. Een pakket geeft dependencies op, maar biedt geen uitvoerbaar bestand, opdrachtnaamruimte of eigen mogelijkheden. Gebruik een pakket om een gecureerde set extensies te publiceren, zoals een productfamilie of scenariobundel:

# yaml-language-server: $schema=https://raw.githubusercontent.com/Azure/azure-dev/refs/heads/main/cli/azd/extensions/extension.schema.json

id: contoso.tools
displayName: Contoso Tools Extension Pack
description: Installs the Contoso azd extensions.
version: 0.1.0

dependencies:
  - id: contoso.azd.tagger
    version: "~0.1.0"

Als u een pack installeert, worden de afhankelijkheden recursief geïnstalleerd van dezelfde extensiebron als het pakket.