Schreiben von azd Hooks in Python, JavaScript, TypeScript oder .NET

Das Azure Developer CLI (azd)-Hook-System unterstützt Zusätzlich zu Bash und PowerShell Python, JavaScript, TypeScript und .NET . azd erkennt automatisch die Sprache aus der Dateierweiterung, verwaltet Abhängigkeiten und führt das Skript ohne zusätzliche Konfiguration aus.

Mit Hooks können Sie benutzerdefinierte Logik an wichtigen Punkten im Lebenszyklus ausführen, z. B. vor der azd Bereitstellung, nach der Bereitstellung und mehr. Allgemeine Informationen zu Hooks, einschließlich verfügbarer Hookereignisse und Konfigurationsoptionen, finden Sie unter Anpassen von Workflows mithilfe von Befehls- und Ereignishaken.

Voraussetzungen

Spracherkennung

Zeigen Sie einen Hook auf eine Skriptdatei in azure.yaml, und azd leitet die Sprache aus der Dateierweiterung ab. Wenn die Erweiterung mehrdeutig oder fehlt, geben Sie die Sprache explizit mit dem kind Feld an:

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

Python Hooks

Um einen Python-Hook zu schreiben, erstellen Sie eine .py Datei, und verweisen Sie darauf in Ihrer azure.yaml. Platzieren Sie ein requirements.txt oder pyproject.toml in demselben Verzeichnis wie das Skript oder ein übergeordnetes Verzeichnis. azd durchläuft den Verzeichnisbaum ab dem Skriptstandort, um die nächstgelegene Projektdatei zu finden, erstellt eine virtuelle Umgebung, installiert die Abhängigkeiten und führt das Skript aus.

Beispielverzeichnisstruktur

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

Beispielkonfiguration

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

Python-spezifische Konfiguration

Verwenden Sie den config Block, um den Namen der standardmäßigen virtuellen Umgebung außer Kraft zu setzen.

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

JavaScript- und TypeScript-Hooks

Um JavaScript- oder TypeScript-Hooks zu schreiben, erstellen Sie eine .js- oder eine .ts-Datei und verweisen Sie in Ihrem azure.yaml darauf. Platzieren Sie package.json im selben Verzeichnis wie Ihr Skript oder in einem übergeordneten Verzeichnis. azd führt npm install aus (oder den im config Block angegebenen Paket-Manager) und führt dann das Skript aus. TypeScript-Skripts werden ohne npx tsx Kompilierungsschritt oder tsconfig.json erforderlich ausgeführt.

Beispielverzeichnisstruktur

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

Beispielkonfiguration

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

JavaScript- und TypeScript-Konfiguration

Verwenden Sie den config Block, um einen bevorzugten Paket-Manager anzugeben.

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

.NET-Hooks

Für .NET-Hooks werden zwei Modi unterstützt:

  • Projektmodus: Wenn ein .csproj, .fsproj, oder .vbproj in demselben Verzeichnis wie das Skript oder in einem übergeordneten Verzeichnis vorhanden ist, führt azd automatisch dotnet restore und dotnet build aus.
  • Einzeldateimodus: Auf .NET 10+ werden eigenständige .cs Dateien direkt ohne dotnet run script.cs Projektdatei ausgeführt.

Beispielverzeichnisstruktur

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

Beispielkonfiguration

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

. NET-spezifische Konfiguration

Geben Sie die Buildkonfiguration und das Zielframework mithilfe des config Blocks an:

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

Überschreiben des Arbeitsverzeichnisses

Legen Sie das Arbeitsverzeichnis für einen Hook mithilfe des dir Felds fest. Diese Konfiguration ist nützlich, wenn sich der Projektstamm vom Skriptspeicherort unterscheidet:

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

Mischen von Sprachen und Formaten

Verwenden Sie unterschiedliche Sprachen für verschiedene Hooks in derselben azure.yaml Datei. Sie können auch mehrsprachige Hooks mit plattformspezifischen Überschreibungen kombinieren.

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

Hilfe anfordern

Informationen zum Melden eines Fehlers, Anfordern von Hilfe oder Vorschlagen einer neuen Funktion für die Azure Developer CLI finden Sie auf der Seite Fehlerbehebung und Support.