Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Hooks zijn azd uitbreidingspunten die automatisch aangepaste scripts uitvoeren vóór en na opdrachten en gebeurtenissen van azd de levenscyclus van de service. Hooks volgen een naamconventie met voor- en postvoorvoegsels op de overeenkomende azd opdracht- of servicegebeurtenisnaam.
U kunt bijvoorbeeld een aangepast script uitvoeren in de volgende scenario's:
- Gebruik de prerestore hook om afhankelijkheidsbeheer aan te passen.
- Gebruik de vooraf geïmplementeerde hook om te controleren of externe afhankelijkheden of aangepaste configuraties aanwezig zijn voordat u uw app implementeert.
- Gebruik de postup aan het einde van een werkstroom of pijplijn om aangepaste opschoning of logboekregistratie uit te voeren.
Beschikbare haken
De volgende azd opdrachthook is beschikbaar:
-
prerestoreenpostrestore: Uitvoeren voor en na pakketafhankelijkheden worden hersteld. -
preprovisionenpostprovision: Uitvoeren voor en nadat Azure-resources zijn gemaakt. -
prepackageenpostpackage: Uitvoeren voor en nadat de toepassing is verpakt. -
predeployenpostdeploy: Voer vóór en nadat de toepassingscode is geïmplementeerd in Azure uit. -
prepublishenpostpublish: Uitvoeren voor en nadat de toepassing is gepubliceerd. -
preupenpostup: voor en na de gecombineerde implementatiepijplijn uitvoeren.Upis een verkorte opdracht waarmeerestore,provisionendeployopeenvolgend worden uitgevoerd. -
predownenpostdown: voor en nadat de resources zijn verwijderd.
De volgende gebeurtenishook voor de levenscyclus van de service zijn beschikbaar:
-
prerestoreenpostrestore: voor en na de servicepakketten en afhankelijkheden worden hersteld. -
prebuildenpostbuild: Voer vóór en na de broncode of container van de service uit. -
prepackageenpostpackage: Uitvoeren voor en nadat de app is verpakt voor implementatie. -
predeployenpostdeploy: Voer vóór en nadat de servicecode is geïmplementeerd in Azure uit. -
prepublishenpostpublish: Uitvoeren voor en nadat de service is gepubliceerd.
Hook-configuratie
Hooks 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-
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: als dit is ingesteld, wordt het actieve script gekoppeld aan de consolestdin,stdout&stderr(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 bestand azure.yaml 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 zijn gedefinieerd in uw .yaml-bestand.
De servicemap (hetzelfde pad dat is gedefinieerd in de eigenschap project van de serviceconfiguratie in het azure.yaml-bestand) is de standaard-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
Meerdere hooks per gebeurtenis
U kunt meerdere hooks per gebeurtenis configureren voor verschillende bereiken, zoals het basisregistratieniveau of voor een specifieke service:
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
Haakjes onafhankelijk uitvoeren
Met de azd hooks run opdracht kunt u hooks onafhankelijk van hun normale trigger-gebeurtenissen uitvoeren. Dit is handig voor het testen en foutopsporing van hooks zonder de hele werkstroom te doorlopen.
azd hooks run <hook-name>
Vervang door <hook-name> de naam van de haak die u wilt uitvoeren (bijvoorbeeld preprovision, postdeploy).
Geavanceerde opties
# 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
Interactieve modus configureren
Hooks worden standaard uitgevoerd in de interactieve modus. Met de interactieve hooks-modus kunt u hookscripts uitvoeren met directe consoleinteractie, zodat u in realtime eenvoudiger fouten kunt opsporen, bewaken en ermee kunt werken. U kunt de eigenschap expliciet instellen in uw interactive hookconfiguratie als u de interactieve modus voor een specifieke hook wilt uitschakelen:
hooks:
postprovision:
shell: sh
run: ./scripts/setup-database.sh
interactive: false # Default is true
Voor servicespecifieke hooks:
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
Omgevingsvariabelen gebruiken met hooks
Hooks kunnen omgevingsvariabelen ophalen en instellen in het .env-bestand met behulp van de opdrachten azd env get-values en azd set <key> <value>. 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 uit het main.bicep-bestand worden ook ingesteld in het .env-bestand. 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.