Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Перехватчики — это azd точки расширения, которые автоматически выполняют пользовательские скрипты до и после azd команд и событий жизненного цикла службы. Перехватчики следуют соглашению об именовании с помощью префиксов предварительного и post в соответствующей azd команде или имени события службы.
Например, может потребоваться запустить пользовательский скрипт в следующих сценариях:
- Используйте перехватчик предварительного хранилища для настройки управления зависимостями.
- Используйте перехватчик predeploy для проверки внешних зависимостей или пользовательских конфигураций перед развертыванием приложения.
- Используйте перехватчик в конце рабочего процесса или конвейера для выполнения пользовательской очистки или ведения журнала.
Доступные крючки
Доступны следующие azd перехватчики команд.
-
prerestoreиpostrestore: выполняется до и после восстановления зависимостей пакета. -
preprovisionиpostprovision. Запуск до и после создания ресурсов Azure. -
prepackageиpostpackage: запуск до и после упаковки приложения. -
predeployиpostdeploy. Запуск до и после развертывания кода приложения в Azure. -
prepublishиpostpublish: запуск до и после публикации приложения. -
preupиpostup: запуск до и после объединенного конвейера развертывания.Up— это сокращенная команда, которая выполняетсяrestore,provisionи последовательноdeploy. -
predownиpostdown. Запуск до и после удаления ресурсов.
Доступны следующие перехватчики событий жизненного цикла службы:
-
prerestoreиpostrestore. Запуск до и после восстановления пакетов служб и зависимостей. -
prebuildиpostbuild. Запуск до и после создания исходного кода или контейнера службы. -
prepackageиpostpackage. Запуск до и после упаковки приложения для развертывания. -
predeployиpostdeploy. Запуск до и после развертывания кода службы в Azure. -
prepublishиpostpublish: запуск до и после публикации службы.
Конфигурация перехватчика
Перехватчики регистрируются в файле в azure.yaml корневом каталоге или в определенной конфигурации службы. Все типы перехватчиков поддерживают следующие параметры конфигурации:
-
shell:sh|pwsh-
примечание. Для
pwshтребуется PowerShell 7.
-
примечание. Для
-
run. Определение встроенного скрипта или пути к файлу. -
continueOnError. Если набор продолжит выполняться даже после ошибки скрипта во время перехвата команды (по умолчанию false). -
interactive. При привязке выполняемого скрипта к консолиstdinstdout&stderr(по умолчанию false). -
windows. Указывает, что вложенные конфигурации будут применяться только в ОС Windows. Если этот параметр конфигурации исключен, перехватчик выполняется на всех платформах. -
posix. Указывает, что вложенные конфигурации будут применяться только к OSes на основе POSIX (Linux & MaxOS). Если этот параметр конфигурации исключен, перехватчик выполняется на всех платформах.
Примеры перехватчика
В следующих примерах показаны различные типы регистраций и конфигураций перехватчиков.
Регистрация корневой команды
Перехватчики можно настроить для выполнения определенных команд azd в корне файла azure.yaml.
Каталог проекта (где находится файл azure.yaml) — текущий рабочий каталог по умолчанию (cwd) для перехватчиков команд.
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
Регистрация службы
Перехватчики также можно настроить для запуска только для определенных служб, определенных в файле .yaml.
Каталог службы (тот же путь, что и в свойстве project конфигурации службы в файле azure.yaml) — это cwd по умолчанию для перехватчиков служб.
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
Определенные перехватчики ОС
При необходимости можно настроить перехватчики для запуска в Windows или Posix (Linux & MaxOS). По умолчанию, если конфигурации Windows или Posix исключены, перехватчик выполняется на всех платформах.
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
Несколько перехватчиков на событие
Вы можете настроить несколько перехватчиков для каждого события в разных областях, например корневой уровень регистрации или для конкретной службы:
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
Запуск крючков независимо
Эта azd hooks run команда позволяет выполнять перехватчики независимо от их обычных событий триггера. Это полезно для тестирования и отладки перехватчиков без прохождения всего рабочего процесса.
azd hooks run <hook-name>
Замените <hook-name> именем перехватчика, который вы хотите запустить (например, preprovision, postdeploy).
Дополнительные параметры
# 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
Настройка интерактивного режима
Перехватчики выполняются в интерактивном режиме по умолчанию. Режим интерактивных перехватчиков позволяет запускать скрипты перехватчиков с прямым взаимодействием консоли, что упрощает отладку, мониторинг и взаимодействие с перехватчиками в режиме реального времени. Вы можете явно задать interactive свойство в конфигурации перехватчика, если вы хотите отключить интерактивный режим для определенного перехватчика:
hooks:
postprovision:
shell: sh
run: ./scripts/setup-database.sh
interactive: false # Default is true
Для перехватчиков для конкретных служб:
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
Использование переменных среды с перехватчиками
Перехватчики могут получать и задавать переменные среды в файле .env с помощью команд azd env get-values и azd set <key> <value>. Перехватчики также могут извлекать переменные среды из локальной среды с помощью синтаксиса ${YOUR_ENVIRONMENT VARIABLE}.
azd автоматически задает определенные переменные среды в файле .env при выполнении команд, таких как AZURE_ENV_NAME и AZURE_LOCATION. Выходные параметры из файла main.bicep также задаются в файле .env. На странице управления переменными среды содержатся дополнительные сведения о рабочих процессах переменных среды.
Перехватчики могут получать и задавать встроенные переменные среды или с помощью ссылочных скриптов, как показано в следующем примере:
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}
Ссылка: скрипт 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
Запрос справки
Сведения о том, как отправить ошибку, запросить справку или предложить новую функцию для Интерфейса командной строки разработчика Azure, перейдите на страницу устранения неполадок и поддержки.