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říkazech a událostech životního cyklu služby. háky se řídí konvencí pojmenování pomocí předpon předpon a posílání u odpovídajícího azd
názvu události příkazu nebo služby.
Můžete například chtít spustit vlastní skript v následujících scénářích:
- Pomocí háku prerestore můžete přizpůsobit správu závislostí.
- Před nasazením aplikace pomocí háku predeploy ověřte, že jsou splněné externí závislosti nebo vlastní konfigurace.
- Pomocí háku postupu na konci pracovního postupu nebo kanálu můžete provést vlastní 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ý běží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.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 se dají zaregistrovat 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
(automaticky odvozeno ze spuštění, pokud není zadáno).- 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 se sada bude i nadále spouštět i po chybě skriptu, ke které došlo během háku příkazu (výchozí nepravda).interactive
: Když nastavíte vazbu spuštěného skriptu na konzolustdin
,stdout
&stderr
(výchozí false).windows
: Určuje, že vnořené konfigurace budou platit pouze 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 se spouštěly pro konkrétní azd
příkazy v kořenovém adresáři souboru azure.yaml
.
Adresář projektu (kde azure.yaml
se soubor nachází) 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 .yaml
souboru.
Adresář služby (stejná cesta jako definovaná ve project
vlastnosti konfigurace služby v azure.yaml
souboru) je výchozím nastavením cwd
pro volání služby.
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
Použití proměnných prostředí s háky
Háky můžou získat a nastavit proměnné prostředí v .env
souboru pomocí azd env get-values
příkazů a azd set <key> <value>
příkazů. Háky můžou také načítat proměnné prostředí z místního prostředí pomocí ${YOUR_ENVIRONMENT VARIABLE}
syntaxe. azd
automaticky nastaví určité proměnné prostředí v .env
souboru při spuštění příkazů, například AZURE_ENV_NAME
a AZURE_LOCATION
. Výstupní parametry ze main.bicep
souboru jsou také nastaveny .env
v souboru. 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 pro řešení potíží a podporu .