Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Háky jsou azd rozšiřující body, které automaticky spouštějí vlastní skripty před příkazy a po azd příkazech a událostech životního cyklu služby. Háky se řídí konvencí vytváření názvů pomocí předpon předpon a posílejte na odpovídající azd název události příkazu nebo služby.
Můžete například chtít spustit vlastní skript v následujících scénářích:
- K přizpůsobení správy závislostí použijte prerestore hook.
- Před nasazením aplikace použijte před nasazením háku pro ověření externích závislostí nebo vlastních konfigurací.
- Pomocí postup připojit na konci pracovního postupu nebo kanálu k provedení vlastního vyčištění nebo protokolování.
Dostupné háky
K dispozici jsou následující azd háky příkazů:
-
prerestoreapostrestore: Spusťte před a po obnovení závislostí balíčku. -
preprovisionapostprovision: Spusťte před a po vytvoření prostředků Azure. -
prepackageapostpackage: Spusťte před a po zabalení aplikace. -
predeployapostdeploy: Spusťte před a po nasazení kódu aplikace do Azure. -
prepublishapostpublish: Spusťte před a po publikování aplikace. -
preupapostup: Spusťte před a po kombinovaném kanálu nasazení.Upje zkrácený příkaz, který spouštírestore,provisionadeploypostupně. -
predownapostdown: Spusťte před a po odebrání prostředků.
K dispozici jsou následující háky událostí životního cyklu služby:
-
prerestoreapostrestore: Spusťte před a po obnovení balíčků a závislostí služby. -
prebuildapostbuild: Spusťte před a po sestavení zdrojového kódu nebo kontejneru služby. -
prepackageapostpackage: Spusťte před a po zabalení aplikace pro nasazení. -
predeployapostdeploy: Spusťte před a po nasazení kódu služby do Azure. -
prepublishapostpublish: Spusťte před a po publikování služby.
Konfigurace háku
Háky se registrují v souboru v azure.yaml kořenovém adresáři nebo v rámci konkrétní konfigurace služby. Všechny typy háků podporují následující možnosti konfigurace:
-
shell:sh|pwsh(volitelné). Pokud tento parametr vynecháte,azdvybere výchozí nastavení na základě operačního systému:pwshv Windows ashv systémech Linux a macOS.azdvytiskne upozornění při použití výchozího nastavení a doporučí explicitně nastaveníshellpro spolehlivost mezi platformami. PowerShell 7 se vyžaduje propwsh. -
run: Definujte vložený skript nebo cestu k souboru. Pro cesty kazdsouborům odvodí prostředí z přípony souboru (například.sh)..ps1 -
continueOnError: Pokud sada bude pokračovat v provádění i po chybě skriptu během volání příkazů (výchozí false). -
interactive: Při nastavení vytvoří vazbu spuštěného skriptu na konzolustdin,stdout&stderr(výchozí false). -
windows: Určuje, že vnořené konfigurace se použijí jenom v operačním systému Windows. Pokud je tato možnost konfigurace vyloučená, spustí se hook na všech platformách. -
posix: Určuje, že vnořené konfigurace budou platit pouze pro operační systémy založené na POSIX (Linux & MaxOS). Pokud je tato možnost konfigurace vyloučená, spustí se hook na všech platformách.
Note
Nastavení shell explicitně zůstává doporučeným přístupem pro projekty napříč platformami, protože výchozí nastavení závisí na operačním systému přispěvatele. Pokud vložený skript používá syntaxi, která je platná pouze v jednom prostředí, deklarujte shell , že se chcete vyhnout selháním modulu runtime.
Příklady háku
Následující příklady ukazují různé typy registrací a konfigurací háku.
Registrace kořenového příkazu
Háky je možné nakonfigurovat tak, aby běžely pro konkrétní příkazy azd v kořenovém adresáři souboru azure.yaml.
Adresář projektu (kde se nachází soubor azure.yaml) je výchozí aktuální pracovní adresář (cwd) pro volání příkazů.
name: todo-nodejs-mongo
metadata:
template: todo-nodejs-mongo@0.0.1-beta
hooks:
prerestore: # Example of an inline script with an explicit shell
shell: sh
run: echo 'Hello'
preprovision: # Example of external script (Relative path from project root)
run: ./hooks/preprovision.sh
services:
web:
project: ./src/web
dist: build
language: js
host: appservice
api:
project: ./src/api
language: js
host: appservice
Registrace služby
Háky je také možné nakonfigurovat tak, aby běžely jenom pro konkrétní služby definované v souboru .yaml.
Adresář služby (stejná cesta jako definovaná ve vlastnosti project konfigurace služby v souboru azure.yaml) je výchozí cwd pro volání služeb.
name: todo-nodejs-mongo
metadata:
template: todo-nodejs-mongo@0.0.1-beta
services:
web:
project: ./src/web
dist: build
language: js
host: appservice
api:
project: ./src/api
language: js
host: appservice
hooks:
prerestore: # Example of an inline script with an explicit shell
shell: sh
run: echo 'Restoring API service...'
prepackage: # Example of external script (Relative path from service path)
run: ./hooks/prepackage.sh
Konkrétní háky operačního systému
Volitelně je možné háky nakonfigurovat tak, aby běžely buď ve Windows, nebo Posix (Linux & MaxOS). Ve výchozím nastavení platí, že pokud jsou konfigurace Windows nebo Posix vyloučeny, háky se spustí na všech platformách.
name: todo-nodejs-mongo
metadata:
template: todo-nodejs-mongo@0.0.1-beta
hooks:
prerestore:
posix: # Only runs on Posix environments
shell: sh
run: echo 'Hello'
windows: # Only runs on Windows environments
shell: pwsh
run: Write-Host "Hello"
services:
web:
project: ./src/web
dist: build
language: js
host: appservice
api:
project: ./src/api
language: js
host: appservice
Vložené skripty pro různé platformy bez explicitního prostředí
Když vynecháte shell vložený háček, azd vybere výchozí prostředí založené na operačním systému: pwsh na Windows a sh v systému Linux a macOS. Tato možnost je užitečná pro jednoduché příkazy, které fungují v obou prostředích, jako je tisk stavové zprávy nebo vyvolání rozhraní příkazového řádku, které už je v cestě uživatele.
name: example-project
hooks:
prerestore: # No shell specified; azd uses pwsh on Windows and sh on Linux/macOS
run: echo 'Restoring dependencies...'
azd vytiskne upozornění, kdykoli se vrátí do výchozího prostředí. Pro vložené skripty, které se spoléhají na syntaxi specifickou pro prostředí, nastavte shell explicitně nebo použijte windows konfiguraci a posix poskytněte obě varianty.
Více háků na událost
Pro každou událost můžete nakonfigurovat více háků v různých oborech, jako je úroveň registrace kořenového adresáře nebo pro konkrétní službu:
name: example-project
services:
api:
project: src/api
host: containerapp
language: ts
hooks:
postprovision:
- shell: sh
run: scripts/postprovision1.sh
- shell: sh
run: scripts/postprovision2.sh
hooks:
postprovision:
- shell: sh
run: scripts/postprovision1.sh
- shell: sh
run: scripts/postprovision2.sh
Nezávislé spouštění háků
Příkaz azd hooks run umožňuje spouštět háky nezávisle na jejich normálních aktivačních událostech. To je užitečné pro testování a ladění háků bez procházení celého pracovního postupu.
azd hooks run <hook-name>
Nahraďte <hook-name> názvem háku, preprovisionkterý chcete spustit (např. , postdeploy).
Upřesnit možnosti
# Run a specific service hook
azd hooks run postdeploy --service api
# Force hooks to run for a specific platform
azd hooks run preprovision --platform windows
# Run hooks in a specific environment
azd hooks run postup -e staging
# Run hooks with all options combined
azd hooks run predeploy --service frontend --platform posix -e production --interactive
Konfigurace interaktivního režimu
Ve výchozím nastavení se háky spouštějí v interaktivním režimu. Interaktivní režim háku umožňuje spouštět skripty háku s přímou interakcí konzoly, což usnadňuje ladění, monitorování a interakci s háky v reálném čase. Vlastnost v konfiguraci háku můžete explicitně nastavit interactive , pokud chcete zakázat interaktivní režim pro konkrétní háček:
hooks:
postprovision:
shell: sh
run: ./scripts/setup-database.sh
interactive: false # Default is true
Pro háky specifické pro službu:
services:
api:
project: ./src/api
language: js
host: appservice
hooks:
postdeploy:
shell: sh
run: ./scripts/post-deploy-verification.sh
interactive: false # Override the default interactive mode
Použití proměnných prostředí s háky
Háky můžou získat a nastavit proměnné prostředí v souboru .env pomocí příkazů azd env get-values a azd set <key> <value>. Háky můžou také načítat proměnné prostředí z místního prostředí pomocí syntaxe ${YOUR_ENVIRONMENT VARIABLE}.
azd automaticky nastaví určité proměnné prostředí v souboru .env při spuštění příkazů, například AZURE_ENV_NAME a AZURE_LOCATION. Výstupní parametry ze souboru main.bicep jsou také nastaveny v souboru .env. Stránka spravovat proměnné prostředí obsahuje další informace o pracovních postupech proměnných prostředí.
Háky můžou získat a nastavit proměnné prostředí vložené nebo prostřednictvím odkazovaných skriptů, jak je znázorněno v následujícím příkladu:
name: azure-search-openai-demo
metadata:
template: azure-search-openai-demo@0.0.2-beta
services:
backend:
project: ./app/backend
language: py
host: appservice
hooks:
postprovision:
windows: # Run referenced script that uses environment variables (script shown below)
shell: pwsh
run: ./scripts/prepdocs.ps1
interactive: true
continueOnError: false
posix:
shell: sh
run: ./scripts/prepdocs.sh
interactive: true
continueOnError: false
postdeploy: # Pull environment variable inline from local device and set in .env file
shell: sh
run: azd env set REACT_APP_WEB_BASE_URL ${SERVICE_WEB_ENDPOINT_URL}
Odkazovaný skript: prepdocs.sh:
echo "Loading azd .env file from current environment"
# Use the `get-values` azd command to retrieve environment variables from the `.env` file
while IFS='=' read -r key value; do
value=$(echo "$value" | sed 's/^"//' | sed 's/"$//')
export "$key=$value"
done <<EOF
$(azd env get-values)
EOF
echo 'Creating python virtual environment "scripts/.venv"'
python3 -m venv scripts/.venv
echo 'Installing dependencies from "requirements.txt" into virtual environment'
./scripts/.venv/bin/python -m pip install -r scripts/requirements.txt
echo 'Running "prepdocs.py"'
./scripts/.venv/bin/python ./scripts/prepdocs.py './data/*'
--storageaccount "$AZURE_STORAGE_ACCOUNT"
--container "$AZURE_STORAGE_CONTAINER"
--searchservice "$AZURE_SEARCH_SERVICE"
--openaiservice "$AZURE_OPENAI_SERVICE"
--openaideployment "$AZURE_OPENAI_EMB_DEPLOYMENT"
--index "$AZURE_SEARCH_INDEX"
--formrecognizerservice "$AZURE_FORMRECOGNIZER_SERVICE"
--tenantid "$AZURE_TENANT_ID" -v
Požádat o pomoc
Informace o tom, jak vytvořit chybu, požádat o pomoc nebo navrhnout novou funkci pro Azure Developer CLI, najdete na stránce řešení potíží a podpory.