Uw Azure Developer CLI-werkstromen aanpassen met behulp van opdracht- en gebeurtenishook
De Azure Developer CLI ondersteunt verschillende uitbreidingspunten om uw werkstromen en implementaties aan te passen. Met de hooks middleware kunt u aangepaste scripts uitvoeren voor en na opdrachten en gebeurtenissen voor azd
de levenscyclus van de service. hooks volgen een naamconventie met behulp van voor- en post-voorvoegsels op de overeenkomende azd
opdracht- of servicegebeurtenisnaam.
U kunt bijvoorbeeld een aangepast script uitvoeren in de volgende scenario's:
- Gebruik de hook prerestore om afhankelijkheidsbeheer aan te passen.
- Gebruik de predeployhook om te controleren of externe afhankelijkheden of aangepaste configuraties aanwezig zijn voordat u uw app implementeert.
- Gebruik de postup hook aan het einde van een werkstroom of pijplijn om aangepaste opschoning of logboekregistratie uit te voeren.
Beschikbare haken
De volgende azd
opdrachthook is beschikbaar:
prerestore
enpostrestore
: Uitvoeren voor en na pakketafhankelijkheden worden hersteld.preprovision
enpostprovision
: Uitvoeren voor en nadat Azure-resources zijn gemaakt.predeploy
enpostdeploy
: Voer vóór en nadat de toepassingscode is geïmplementeerd in Azure uit.preup
enpostup
: Voer vóór en na de gecombineerde implementatiepijplijn uit.Up
is een verkorte opdracht die wordt uitgevoerdrestore
,provision
endeploy
sequentieel.predown
enpostdown
: Uitvoeren voor en nadat de resources zijn verwijderd.
De volgende gebeurtenishook voor de levenscyclus van de service zijn beschikbaar:
prerestore
enpostrestore
: Voor en na de servicepakketten en afhankelijkheden worden hersteld.prepackage
enpostpackage
: Voor en nadat de app is verpakt voor implementatie.predeploy
enpostdeploy
: Voer vóór en nadat de servicecode is geïmplementeerd in Azure uit.
Hook-configuratie
Hooks kunnen worden geregistreerd in uw azure.yaml
bestand in de hoofdmap of in een specifieke serviceconfiguratie. Alle typen hooks ondersteunen de volgende configuratieopties:
shell
:sh
|pwsh
(automatisch afgeleid van uitvoering indien niet opgegeven).- Opmerking: PowerShell 7 is vereist voor
pwsh
.
- Opmerking: PowerShell 7 is vereist voor
run
: Definieer een inlinescript of een pad naar een bestand.continueOnError
: Wanneer de set wordt uitgevoerd, zelfs nadat er een scriptfout is opgetreden tijdens een opdrachthook (standaard onwaar).interactive
: Wanneer de set het actieve script verbindt met de consolestdin
,stdout
enstderr
(standaard onwaar).windows
: Hiermee geeft u op dat de geneste configuraties alleen van toepassing zijn op het Windows-besturingssysteem. Als deze configuratieoptie is uitgesloten, wordt de hook uitgevoerd op alle platforms.posix
: Hiermee geeft u op dat de geneste configuraties alleen van toepassing zijn op OP POSIX gebaseerde besturingssystemen (Linux & MaxOS). Als deze configuratieoptie is uitgesloten, wordt de hook uitgevoerd op alle platforms.
Hook-voorbeelden
In de volgende voorbeelden ziet u verschillende soorten hookregistraties en configuraties.
Registratie van hoofdopdracht
Hooks kunnen worden geconfigureerd om te worden uitgevoerd voor specifieke azd
opdrachten in de hoofdmap van uw azure.yaml
bestand.
De projectmap (waar het azure.yaml
bestand zich bevindt) is de standaard huidige werkmap (cwd
) voor opdrachthook.
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
Serviceregistratie
Hooks kunnen ook worden geconfigureerd om alleen te worden uitgevoerd voor specifieke services die in uw .yaml
bestand zijn gedefinieerd.
De servicemap (hetzelfde pad als gedefinieerd in de eigenschap van de project
serviceconfiguratie in het azure.yaml
bestand) is de standaardwaarde cwd
voor servicehook.
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
Specifieke haken voor het besturingssysteem
Optioneel kunnen hooks ook worden geconfigureerd voor uitvoering in Windows of Posix (Linux & MaxOS). Als de Windows- of Posix-configuraties standaard worden uitgesloten, wordt de hook op alle platforms uitgevoerd.
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
Omgevingsvariabelen gebruiken met hooks
Hooks kunnen omgevingsvariabelen in het .env
bestand ophalen en instellen met behulp van de azd env get-values
en azd set <key> <value>
opdrachten. Hooks kunnen ook omgevingsvariabelen ophalen uit uw lokale omgeving met behulp van de ${YOUR_ENVIRONMENT VARIABLE}
syntaxis. azd
stelt automatisch bepaalde omgevingsvariabelen in het .env
bestand in wanneer opdrachten worden uitgevoerd, zoals AZURE_ENV_NAME
en AZURE_LOCATION
. Uitvoerparameters van het main.bicep
bestand worden ook in het .env
bestand ingesteld. De pagina Omgevingsvariabelen beheren bevat meer informatie over werkstromen voor omgevingsvariabelen .
Hooks kunnen omgevingsvariabelen inline of via scripts waarnaar wordt verwezen, ophalen en instellen, zoals wordt weergegeven in het volgende voorbeeld:
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}
Het script waarnaar wordt verwezen: 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
Hulp vragen
Ga naar de pagina voor probleemoplossing en ondersteuning voor informatie over het indienen van een bug, hulp vragen of een nieuwe functie voorstellen voor de Azure Developer CLI.