Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Hooks är azd tilläggspunkter som automatiskt kör anpassade skript före och efter azd kommandon och livscykelhändelser för tjänsten. Hooks följer en namngivningskonvention med pre - och postprefix 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:
-
prerestoreochpostrestore: Kör före och efter paketberoenden återställs. -
preprovisionochpostprovision: Kör före och efter att Azure-resurser har skapats. -
prepackageochpostpackage: Kör före och efter att programmet har paketerats. -
predeployochpostdeploy: Kör före och efter att programkoden har distribuerats till Azure. -
prepublishochpostpublish: Kör före och efter att programmet har publicerats. -
preupochpostup: Kör före och efter den kombinerade distributionspipelinen.Upär ett kortkommando som körrestore,provisionochdeploysekventiellt. -
predownochpostdown: Kör före och efter att resurserna har tagits bort.
Följande händelsekrokar för tjänstlivscykel är tillgängliga:
-
prerestoreochpostrestore: Kör före och efter att tjänstpaketen och beroendena har återställts. -
prebuildochpostbuild: Kör före och efter att tjänstens källkod eller container har skapats. -
prepackageochpostpackage: Kör före och efter att appen har paketerats för distribution. -
predeployochpostdeploy: Kör före och efter att tjänstkoden har distribuerats till Azure. -
prepublishochpostpublish: Kör före och efter att tjänsten har publicerats.
Hook-konfiguration
Hooks registreras i filen azure.yaml 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
Kör krokar oberoende av varandra
Med azd hooks run kommandot kan du köra krokar oberoende av deras normala utlösarhändelser. Detta är användbart för att testa och felsöka krokar utan att gå igenom hela arbetsflödet.
azd hooks run <hook-name>
Ersätt <hook-name> med namnet på den krok som du vill köra (t.ex. preprovision, postdeploy).
Avancerade alternativ
# 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
Konfigurera interaktivt läge
Krokar körs som standard i interaktivt läge. Med interaktivt hooks-läge kan du köra hook-skript med direktkonsolinteraktion, vilket gör det enklare att felsöka, övervaka och interagera med dina krokar i realtid. Du kan uttryckligen interactive ange egenskapen i din hook-konfiguration om du vill inaktivera interaktivt läge för en specifik krok:
hooks:
postprovision:
shell: sh
run: ./scripts/setup-database.sh
interactive: false # Default is true
För tjänstspecifika krokar:
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
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.