Scrivere gli azd hook in Python, JavaScript, TypeScript o .NET

Il sistema hook dell'interfaccia della riga di comando per sviluppatori di Azure (azd) supporta Python, JavaScript, TypeScript e .NET oltre a Bash e PowerShell. azd rileva automaticamente il linguaggio dall'estensione di file, gestisce le dipendenze ed esegue lo script senza alcuna configurazione aggiuntiva necessaria.

Gli hook consentono di eseguire logiche personalizzate in punti chiave del ciclo di vita, come ad esempio prima del provisioning azd, dopo la distribuzione ed eccetera. Per informazioni generali sugli hook, inclusi gli eventi hook disponibili e le opzioni di configurazione, vedere Personalizzare i flussi di lavoro usando hook di comandi ed eventi.

Prerequisites

Rilevamento della lingua

Puntare un hook a un file di script in azure.yaml e azd inferisce il linguaggio dall'estensione del file. Se l'estensione è ambigua o mancante, specificare la lingua in modo esplicito con il kind campo :

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

Hook di Python

Per scrivere un hook di Python, crea un file .py e riferisciti ad esso nel tuo azure.yaml. Inserire un requirements.txt o pyproject.toml nella stessa directory dello script o di una directory principale. azd esplora l'albero della directory dal percorso dello script per trovare il file di progetto più vicino, crea un ambiente virtuale, installa le dipendenze ed esegue lo script.

Struttura di directory di esempio

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

Configurazione di esempio

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

Configurazione specifica di Python

Usare il blocco config per eseguire l'override del nome predefinito dell'ambiente virtuale.

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

Hook di JavaScript e TypeScript

Per scrivere hook JavaScript o TypeScript, creare un file .js o un .ts e farne riferimento in azure.yaml. Posiziona un elemento package.json nella stessa directory del tuo script o in una directory superiore. azd esegue npm install (o la gestione pacchetti specificata nel config blocco) ed esegue lo script. Gli script TypeScript vengono eseguiti tramite npx tsx senza passaggi di compilazione o tsconfig.json necessari.

Struttura di directory di esempio

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

Configurazione di esempio

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

Configurazione di JavaScript e TypeScript

Usare il config blocco per specificare una gestione pacchetti preferita.

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

Hook di .NET

Sono supportate due modalità per gli hook .NET:

  • Modalità progetto: Se un .csproj, .fsproj o .vbproj esiste nella stessa directory dello script o in una directory padre, azd esegue dotnet restore e dotnet build automaticamente.
  • Modalità file singolo: in .NET 10+, i file autonomi .cs vengono eseguiti direttamente tramite dotnet run script.cs senza un file di progetto.

Struttura di directory di esempio

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

Configurazione di esempio

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

. Configurazione specifica di NET

Specificare la configurazione di compilazione e il framework di destinazione usando il config blocco :

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

Eseguire l'override della directory di lavoro

Impostare la directory di lavoro per un hook usando il dir campo . Questa configurazione è utile quando la radice del progetto è diversa dal percorso dello script:

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

Combinare lingue e formati

Usare lingue diverse per hook diversi nello stesso azure.yaml file. È possibile anche combinare hook multilingue con override specifici per la piattaforma:

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

Richiedere assistenza

Per informazioni su come inviare un bug, richiedere assistenza o proporre una nuova funzionalità per l'interfaccia della riga di comando per sviluppatori di Azure, visitare la pagina troubleshooting e supporto.