Anpassa dina Azure Developer CLI-arbetsflöden med hjälp av kommando- och händelsekrokar
Azure Developer CLI stöder olika tilläggspunkter för att anpassa dina arbetsflöden och distributioner. Med hooks-mellanprogrammet kan du köra anpassade skript före och efter azd
kommandon och livscykelhändelser för tjänsten. hooks följer en namngivningskonvention med före och publicera prefix på matchande azd
kommando- eller tjänsthändelsenamn.
Du kanske till exempel vill köra ett anpassat skript i följande scenarier:
- Använd förlagring hook för att anpassa beroendehantering.
- Använd fördistribuering hook för att kontrollera att externa beroenden eller anpassade konfigurationer finns på plats innan du distribuerar appen.
- Använd i slutet av ett arbetsflöde eller en pipeline för att utföra anpassad rensning eller loggning.
Tillgängliga krokar
Följande azd
kommandokrokar är tillgängliga:
-
prerestore
ochpostrestore
: Kör före och efter paketberoenden återställs. -
preprovision
ochpostprovision
: Kör före och efter att Azure-resurser har skapats. -
predeploy
ochpostdeploy
: Kör före och efter att programkoden har distribuerats till Azure. -
preup
ochpostup
: Kör före och efter den kombinerade distributionspipelinen.Up
är ett kortkommando som körrestore
,provision
ochdeploy
sekventiellt. -
predown
ochpostdown
: Kör före och efter att resurserna har tagits bort.
Följande händelsekrokar för tjänstlivscykel är tillgängliga:
-
prerestore
ochpostrestore
: Kör före och efter att tjänstpaketen och beroendena har återställts. -
prebuild
ochpostbuild
: Kör före och efter att tjänstens källkod eller container har skapats. -
prepackage
ochpostpackage
: Kör före och efter att appen har paketerats för distribution. -
predeploy
ochpostdeploy
: Kör före och efter att tjänstkoden har distribuerats till Azure.
Hook-konfiguration
Hooks kan registreras i din azure.yaml
-fil i roten eller inom en specifik tjänstkonfiguration. Alla typer av krokar stöder följande konfigurationsalternativ:
-
shell
:sh
|pwsh
-
Obs: PowerShell 7 krävs för
pwsh
.
-
Obs: PowerShell 7 krävs för
-
run
: Definiera ett infogat skript eller en sökväg till en fil. -
continueOnError
: När uppsättningen fortsätter att köras även efter att ett skriptfel uppstod under en kommandokrok (standard false). -
interactive
: När uppsättningen kommer att binda skriptet som körs till konsolenstdin
,stdout
&stderr
(standard false). -
windows
: Anger att kapslade konfigurationer endast ska gälla för Windows OS. Om det här konfigurationsalternativet undantas körs kroken på alla plattformar. -
posix
: Anger att kapslade konfigurationer endast ska gälla för POSIX-baserade operativsystem (Linux & MaxOS). Om det här konfigurationsalternativet undantas körs kroken på alla plattformar.
Hook-exempel
I följande exempel visas olika typer av hookregistreringar och konfigurationer.
Rotkommandoregistrering
Hooks kan konfigureras för att köras för specifika azd
kommandon i roten för din azure.yaml
-fil.
Projektkatalogen (där den azure.yaml
filen finns) är den aktuella standardkatalogen (cwd
) för kommandokrokar.
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
Tjänstregistrering
Hooks kan också konfigureras att endast köras för specifika tjänster som definierats i din .yaml
-fil.
Tjänstkatalogen (samma sökväg som definierats i egenskapen project
för tjänstkonfigurationen i filen azure.yaml
) är standard cwd
för tjänstkrokar.
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
OS-specifika krokar
Du kan också konfigurera krokar för att köras antingen på Windows eller Posix (Linux & MaxOS). Om Windows- eller Posix-konfigurationerna undantas körs hooken som standard på alla plattformar.
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
Flera krokar per händelse
Du kan konfigurera flera krokar per händelse i olika omfång, till exempel rotregistreringsnivån eller för en specifik tjänst:
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
Använda miljövariabler med krokar
Hooks kan hämta och ange miljövariabler i .env
-filen med hjälp av kommandona azd env get-values
och azd set <key> <value>
. Hooks kan också hämta miljövariabler från din lokala miljö med hjälp av ${YOUR_ENVIRONMENT VARIABLE}
syntax.
azd
anger automatiskt vissa miljövariabler i .env
-filen när kommandon körs, till exempel AZURE_ENV_NAME
och AZURE_LOCATION
. Utdataparametrar från main.bicep
-filen anges också i filen .env
. Sidan hantera miljövariabler innehåller mer information om arbetsflöden för miljövariabler.
Hooks kan hämta och ange miljövariabler infogade eller via refererade skript, vilket visas i följande exempel:
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}
Det refererade: prepdocs.sh
skript:
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
Begär hjälp
Information om hur du skickar in en bugg, begär hjälp eller föreslår en ny funktion för Azure Developer CLI finns på sidan felsökning och support.