Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los enlaces son azd puntos de extensión que ejecutan automáticamente scripts personalizados antes y después azd de los comandos y los eventos del ciclo de vida del servicio. Los enlaces siguen una convención de nomenclatura mediante prefijos previos y posteriores en el comando coincidente azd o el nombre del evento de servicio.
Por ejemplo, puede que desee ejecutar un script personalizado en los escenarios siguientes:
- Use el enlace de de prerestore para personalizar la administración de dependencias.
- Use el enlace implementación previa para comprobar que las dependencias externas o las configuraciones personalizadas están implementadas antes de implementar la aplicación.
- Use el postup enlace al final de un flujo de trabajo o canalización para realizar una limpieza o registro personalizados.
Enlaces disponibles
Están disponibles los siguientes enlaces de comandos azd:
-
prerestoreypostrestore: ejecute antes y después de restaurar las dependencias del paquete. -
preprovisionypostprovision: ejecute antes y después de crear los recursos de Azure. -
prepackageypostpackage: ejecute antes y después de empaquetar la aplicación. -
predeployypostdeploy: ejecute antes y después de implementar el código de la aplicación en Azure. -
prepublishypostpublish: ejecute antes y después de publicar la aplicación. -
preupypostup: ejecute antes y después de la canalización de implementación combinada.Upes un comando abreviado que ejecutarestore,provisionydeploysecuencialmente. -
predownypostdown: ejecute antes y después de quitar los recursos.
Están disponibles los siguientes enlaces de eventos del ciclo de vida del servicio:
-
prerestoreypostrestore: ejecute antes y después de restaurar los paquetes de servicio y las dependencias. -
prebuildypostbuild: ejecute antes y después de compilar el código fuente del servicio o el contenedor. -
prepackageypostpackage: ejecute antes y después de empaquetar la aplicación para la implementación. -
predeployypostdeploy: ejecute antes y después de implementar el código de servicio en Azure. -
prepublishypostpublish: ejecute antes y después de publicar el servicio.
Configuración del enlace
Los enlaces se registran en el archivo en azure.yaml la raíz o dentro de una configuración de servicio específica. Todos los tipos de enlaces admiten las siguientes opciones de configuración:
-
shell:sh|pwsh-
Nota: PowerShell 7 es necesario para
pwsh.
-
Nota: PowerShell 7 es necesario para
-
run: defina un script insertado o una ruta de acceso a un archivo. -
continueOnError: cuando set continúe ejecutándose incluso después de que se haya producido un error de script durante un enlace de comandos (valor predeterminado false). -
interactive: cuando se establece enlazará el script en ejecución a la consolastdin,stdout&stderr(valor predeterminado false). -
windows: especifica que las configuraciones anidadas solo se aplicarán en el sistema operativo Windows. Si se excluye esta opción de configuración, el enlace se ejecuta en todas las plataformas. -
posix: especifica que las configuraciones anidadas solo se aplicarán a los sistemas operativos basados en POSIX (Linux & MaxOS). Si se excluye esta opción de configuración, el enlace se ejecuta en todas las plataformas.
Ejemplos de enlace
En los ejemplos siguientes se muestran diferentes tipos de registros y configuraciones de enlace.
Registro de comandos raíz
Los enlaces se pueden configurar para ejecutarse para comandos de azd específicos en la raíz del archivo azure.yaml.
El directorio del proyecto (donde se encuentra el archivo azure.yaml) es el directorio de trabajo actual predeterminado (cwd) para los enlaces de comandos.
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
Registro del servicio
Los enlaces también se pueden configurar para que solo se ejecuten para servicios específicos definidos en el archivo .yaml.
El directorio de servicio (misma ruta de acceso que se define en la propiedad project de la configuración del servicio en el archivo azure.yaml) es el cwd predeterminado para los enlaces de servicio.
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
Enlaces específicos del sistema operativo
Opcionalmente, los enlaces también se pueden configurar para que se ejecuten en Windows o Posix (Linux & MaxOS). De forma predeterminada, si las configuraciones de Windows o Posix se excluyen, el enlace se ejecuta en todas las plataformas.
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
Varios enlaces por evento
Puede configurar varios enlaces por evento en distintos ámbitos, como el nivel de registro raíz o para un servicio específico:
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
Ejecutar enlaces de forma independiente
El azd hooks run comando permite ejecutar enlaces independientemente de sus eventos de desencadenador normales. Esto es útil para probar y depurar enlaces sin pasar por todo el flujo de trabajo.
azd hooks run <hook-name>
Reemplace <hook-name> por el nombre del enlace que desea ejecutar (por ejemplo, preprovision, postdeploy).
Opciones avanzadas
# 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
Configuración del modo interactivo
Los enlaces se ejecutan en modo interactivo de forma predeterminada. El modo de enlaces interactivos permite ejecutar scripts de enlace con la interacción directa de la consola, lo que facilita la depuración, la supervisión e interacción con los enlaces en tiempo real. Puede establecer explícitamente la propiedad en la interactive configuración del enlace si desea deshabilitar el modo interactivo para un enlace específico:
hooks:
postprovision:
shell: sh
run: ./scripts/setup-database.sh
interactive: false # Default is true
Para enlaces específicos del servicio:
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
Uso de variables de entorno con enlaces
Los enlaces pueden obtener y establecer variables de entorno en el archivo .env mediante los comandos azd env get-values y azd set <key> <value>. Los enlaces también pueden recuperar variables de entorno del entorno local mediante la sintaxis ${YOUR_ENVIRONMENT VARIABLE}.
azd establece automáticamente determinadas variables de entorno en el archivo .env cuando se ejecutan comandos, como AZURE_ENV_NAME y AZURE_LOCATION. Los parámetros de salida del archivo main.bicep también se establecen en el archivo .env. La página administrar variables de entorno incluye más información sobre los flujos de trabajo de variables de entorno.
Los enlaces pueden obtener y establecer variables de entorno insertadas o a través de scripts a los que se hace referencia, como se muestra en el ejemplo siguiente:
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}
El script al que se hace referencia: 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
Solicitar ayuda
Para obtener información sobre cómo archivar un error, solicitar ayuda o proponer una nueva característica para la CLI para desarrolladores de Azure, visite la página solución de problemas y soporte técnico.