Přizpůsobení pracovních postupů Azure Developer CLI pomocí příkazů a hooků událostí
Azure Developer CLI podporuje různé body rozšíření pro přizpůsobení pracovních postupů a nasazení. Middleware hooks umožňuje spouštět vlastní skripty před a po azd
příkazy a události životního cyklu služby. háky se řídí konvencí vytváření názvů pomocí před a post předpony odpovídající azd
příkazu nebo názvu události 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ů:
-
prerestore
apostrestore
: Spusťte před a po obnovení závislostí balíčku. -
preprovision
apostprovision
: Spusťte před a po vytvoření prostředků Azure. -
predeploy
apostdeploy
: Spusťte před a po nasazení kódu aplikace do Azure. -
preup
apostup
: Spusťte před a po kombinovaném kanálu nasazení.Up
je zkrácený příkaz, který spouštírestore
,provision
adeploy
postupně. -
predown
apostdown
: 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:
-
prerestore
apostrestore
: Spusťte před a po obnovení balíčků a závislostí služby. -
prebuild
apostbuild
: Spusťte před a po sestavení zdrojového kódu nebo kontejneru služby. -
prepackage
apostpackage
: Spusťte před a po zabalení aplikace pro nasazení. -
predeploy
apostdeploy
: Spusťte před a po nasazení kódu služby do Azure.
Konfigurace háku
Háky je možné zaregistrovat v souboru azure.yaml
v 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
-
Poznámka: PowerShell 7 se vyžaduje pro
pwsh
.
-
Poznámka: PowerShell 7 se vyžaduje pro
-
run
: Definujte vložený skript nebo cestu k souboru. -
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.
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. (shell is required for inline scripts)
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. (shell is required for inline scripts)
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
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
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.