Escriba hooks azd en Python, JavaScript, TypeScript o .NET

El sistema de enlace de la CLI para desarrolladores de Azure (azd) admite Python, JavaScript, TypeScript y .NET además de Bash y PowerShell. azd detecta automáticamente el lenguaje de la extensión de archivo, administra las dependencias y ejecuta el script sin que se requiera ninguna configuración adicional.

Los enlaces permiten ejecutar lógica personalizada en puntos clave del ciclo de vida, como antes del azd aprovisionamiento, después de la implementación, etc. Para obtener información general sobre los enlaces, incluidos los eventos de enlace disponibles y las opciones de configuración, consulte Personalización de flujos de trabajo mediante enlaces de comandos y eventos.

Prerequisites

Detección de idioma

Apunte un gancho a un archivo de script en azure.yaml, y azd infiere el idioma de la extensión del archivo. Si la extensión es ambigua o falta, especifique el idioma explícitamente con el kind campo :

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

Hooks de Python

Para escribir un hook de Python, cree un archivo .py y haga referencia a él en azure.yaml. Coloque un `requirements.txt` o un `pyproject.toml` en el mismo directorio que el script o en un directorio padre. azd recorre el árbol de directorios desde la ubicación del script para buscar el archivo de proyecto más cercano, crea un entorno virtual, instala dependencias y ejecuta el script.

Estructura de directorios de ejemplo

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

Ejemplo de configuración

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

Configuración específica de Python

Use el config bloque para invalidar el nombre predeterminado del entorno virtual.

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

Hooks de JavaScript y TypeScript

Para escribir hooks de JavaScript o TypeScript, cree un archivo .js o .ts y referencia este en su azure.yaml. Coloque un package.json en el mismo directorio que su script o un directorio padre. azd ejecuta npm install (o el administrador de paquetes especificado en el config bloque) y ejecuta el script. Los scripts de TypeScript se ejecutan mediante npx tsx sin necesidad de pasos de compilación ni de tsconfig.json.

Estructura de directorios de ejemplo

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

Ejemplo de configuración

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

Configuración de JavaScript y TypeScript

Use el config bloque para especificar un administrador de paquetes preferido.

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

Enlaces de .NET

Se admiten dos modos para los enlaces de .NET:

  • Modo de proyecto: si existe un .csproj, .fsprojo .vbproj en el mismo directorio que el script o un directorio primario, azd se ejecuta y dotnet restore automáticamentedotnet build.
  • Modo de archivo único: en .NET 10+, los archivos independientes .cs se ejecutan directamente a través de dotnet run script.cs sin un archivo de proyecto.

Estructura de directorios de ejemplo

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

Ejemplo de configuración

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

.NET - Configuración específica

Especifique la configuración de compilación y la plataforma de destino mediante el config bloque :

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

Invalidación del directorio de trabajo

Establezca el directorio de trabajo para un enlace mediante el campo dir. Esta configuración es útil cuando la raíz del proyecto difiere de la ubicación del script:

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

Mezcla de idiomas y formatos

Use diferentes idiomas para enlaces diferentes en el mismo azure.yaml archivo. También puede combinar hooks de varios idiomas con sobrescrituras específicas de la plataforma:

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

Solicitar ayuda

Para obtener información sobre cómo archivar un error, solicitar ayuda o proponer una nueva característica para la CLI para desarrolladores de Azure, visite la página troubleshooting and support.