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 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örlagringskroken för att anpassa beroendehantering.
- Använd fördistributionskroken för att kontrollera att externa beroenden eller anpassade konfigurationer finns på plats innan du distribuerar appen.
- Använd efterkopplingskroken 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.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 filen azure.yaml
i roten eller inom en specifik tjänstkonfiguration. Alla typer av krokar stöder följande konfigurationsalternativ:
shell
:sh
|pwsh
(härleds automatiskt från körning om det inte anges).- 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 binder skriptet som körs till konsolenstdin
,stdout
&stderr
(standard falskt).windows
: Anger att de kapslade konfigurationerna endast ska gälla för Windows OS. Om det här konfigurationsalternativet undantas körs kroken på alla plattformar.posix
: Anger att de kapslade konfigurationerna endast gäller för POSIX-baserade operativsystem (Linux och 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 av azure.yaml
filen.
Projektkatalogen azure.yaml
(där filen finns) är standardkatalogen för den aktuella arbetskatalogen (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 filen .yaml
.
Tjänstkatalogen (samma sökväg som definierats i project
egenskapen för tjänstkonfigurationen azure.yaml
i filen) är standardvärdet 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
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 syntaxen ${YOUR_ENVIRONMENT VARIABLE}
. 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 .env
filen. 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
skriptet:
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å felsöknings - och supportsidan .
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för