Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Перехватчики — это 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(необязательно). Если опущено,azdвыбирается значение по умолчанию на основе операционной системы:pwshна Windows иshв Linux и macOS.azdвыводит предупреждение при использовании по умолчанию и рекомендует явно задатьshellдля кроссплатформенной надежности. Для PowerShell 7 требуетсяpwsh. -
run. Определение встроенного скрипта или пути к файлу. Для путейazdк файлам включает оболочку из расширения файла (например,.shили.ps1). -
continueOnError. Если набор продолжит выполняться даже после ошибки скрипта во время перехвата команды (по умолчанию false). -
interactive. При привязке выполняемого скрипта к консолиstdinstdout&stderr(по умолчанию false). -
windows. Указывает, что вложенные конфигурации будут применяться только в ОС Windows. Если этот параметр конфигурации исключен, перехватчик выполняется на всех платформах. -
posix. Указывает, что вложенные конфигурации будут применяться только к OSes на основе POSIX (Linux & MaxOS). Если этот параметр конфигурации исключен, перехватчик выполняется на всех платформах.
Замечание
Явное определение shell остается рекомендуемым подходом для кроссплатформенных проектов, так как значение по умолчанию зависит от операционной системы участника. Если встроенный скрипт использует синтаксис, допустимый только в одной оболочке, объявите shell , чтобы избежать сбоев среды выполнения.
Примеры перехватчика
В следующих примерах показаны различные типы регистраций и конфигураций перехватчиков.
Регистрация корневой команды
Перехватчики можно настроить для выполнения определенных команд 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 with an explicit shell
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 with an explicit shell
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
Кроссплатформенные встроенные скрипты без явной оболочки
При пропуске shell встроенного перехватчика azd выбирает оболочку по умолчанию на основе операционной системы: pwsh на Windows и sh в Linux и macOS. Этот параметр полезен для простых команд, работающих в обоих оболочках, таких как печать сообщения о состоянии или вызов интерфейса командной строки, который уже находится на пути пользователя.
name: example-project
hooks:
prerestore: # No shell specified; azd uses pwsh on Windows and sh on Linux/macOS
run: echo 'Restoring dependencies...'
azd выводит предупреждение всякий раз, когда он возвращается в оболочку по умолчанию. Для встроенных скриптов, использующих синтаксис для конкретной оболочки, задайте shell явным образом или используйте windowsposix конфигурации для предоставления обоих вариантов.
Несколько перехватчиков на событие
Вы можете настроить несколько перехватчиков для каждого события в разных областях, например корневой уровень регистрации или для конкретной службы:
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, перейдите на страницу устранения неполадок и поддержки.