Écrire des hooks azd en Python, JavaScript, TypeScript ou .NET

Le système de raccordement Azure Developer CLI (azd) prend en charge Python, JavaScript, TypeScript et .NET en plus de Bash et PowerShell. azd détecte automatiquement la langue de l’extension de fichier, gère les dépendances et exécute le script sans configuration supplémentaire requise.

Les hooks vous permettent d’exécuter une logique personnalisée à des points clés du cycle de vie, comme avant l’approvisionnement azd , après le déploiement, etc. Pour obtenir des informations générales sur les hooks, y compris les événements de hook disponibles et les options de configuration, consultez Personnaliser les flux de travail à l’aide des hooks de commande et d’événements.

Prerequisites

Détection de langue

Pointez un hook sur un fichier de script dans azure.yaml, et azd déduit la langue de l’extension de fichier. Si l’extension est ambiguë ou manquante, spécifiez la langue explicitement avec le kind champ :

hooks:
  preprovision:
    run: ./hooks/setup.py
    kind: python    # explicit — overrides extension inference

Crochets Python

Pour écrire un hook Python, créez un .py fichier et référencez-le dans votre azure.yaml. Placez un requirements.txt ou un pyproject.toml dans le même répertoire que le script ou dans un répertoire parent. azd guide l’arborescence de répertoires à partir de l’emplacement du script pour rechercher le fichier projet le plus proche, crée un environnement virtuel, installe les dépendances et exécute le script.

Exemple de structure de répertoires

hooks/
├── setup.py
└── requirements.txt

Exemple de configuration

hooks:
  preprovision:
    run: ./hooks/setup.py

Configuration spécifique à Python

Utilisez le config bloc pour remplacer le nom d’environnement virtuel par défaut.

hooks:
  preprovision:
    run: ./hooks/setup.py
    config:
      virtualEnvName: .venv   # override default naming

Hooks JavaScript et TypeScript

Pour écrire des hooks JavaScript ou TypeScript, créez un .js ou .ts et référencez-le dans votre azure.yaml. Placez un package.json répertoire dans le même répertoire que votre script ou un répertoire parent. azd exécute npm install (ou le gestionnaire de packages spécifié dans le bloc config) et exécute le script. Les scripts TypeScript s’exécutent via npx tsx sans qu'une étape de compilation ou tsconfig.json soit nécessaire.

Exemple de structure de répertoires

hooks/
├── seed.ts
└── package.json

Exemple de configuration

hooks:
  postdeploy:
    run: ./hooks/seed.ts

Configuration JavaScript et TypeScript

Utilisez le config bloc pour spécifier un gestionnaire de package préféré.

hooks:
  postdeploy:
    run: ./hooks/seed.ts
    config:
      packageManager: pnpm    # npm | pnpm | yarn

Hooks .NET

Deux modes sont pris en charge pour les hooks .NET :

  • Mode projet : si un .csproj, .fsproj ou .vbproj existe dans le même répertoire que le script ou dans un répertoire parent, azd, dotnet restore et dotnet build s'exécutent automatiquement.
  • Mode fichier unique : sur .NET 10+, les fichiers autonomes .cs s’exécutent directement sans dotnet run script.cs fichier projet.

Exemple de structure de répertoires

hooks/
├── migrate.cs
└── migrate.csproj   # optional — omit for single-file mode on .NET 10+

Exemple de configuration

hooks:
  postprovision:
    run: ./hooks/migrate.cs

Configuration spécifique à .NET

Spécifiez la configuration de build et l’infrastructure cible à l’aide du config bloc :

hooks:
  postprovision:
    run: ./hooks/migrate.cs
    config:
      configuration: Release  # Debug | Release
      framework: net10.0      # target framework

Remplacer le répertoire de travail

Définissez le répertoire de travail d’un hook à l’aide du dir champ. Cette configuration est utile lorsque la racine du projet diffère de l’emplacement du script :

hooks:
  preprovision:
    run: main.py
    dir: hooks/preprovision

Mélanger les langues et les formats

Utilisez différentes langues pour différents hooks dans le même azure.yaml fichier. Vous pouvez également combiner des hooks multi-langages avec des remplacements spécifiques à la plateforme :

hooks:
  preprovision:
    run: ./hooks/setup.py

  postdeploy:
    run: ./hooks/seed.ts

  postprovision:
    run: ./hooks/migrate.cs

  predeploy:
    windows:
      run: ./hooks/build.ps1
    posix:
      run: ./hooks/build.sh

Demander de l’aide

Pour plus d’informations sur la façon de déposer un bogue, de demander de l’aide ou de proposer une nouvelle fonctionnalité pour l’interface CLI Azure développeur, visitez la page troubleshooting et support.