Настройка рабочих процессов Интерфейса командной строки разработчика Azure с помощью команд и перехватчиков событий

Интерфейс командной строки разработчика Azure поддерживает различные точки расширения для настройки рабочих процессов и развертываний. ПО промежуточного слоя перехватчиков позволяет выполнять пользовательские скрипты до и после azd команд и событий жизненного цикла службы. перехватчики следуют соглашению об именовании с помощью префиксов предварительного и post в соответствующей azd команде или имени события службы.

Например, может потребоваться запустить пользовательский скрипт в следующих сценариях:

  • Используйте перехватчик предварительного хранилища для настройки управления зависимостями.
  • Используйте перехватчик predeploy для проверки внешних зависимостей или пользовательских конфигураций перед развертыванием приложения.
  • Используйте перехватчик публикации в конце рабочего процесса или конвейера для выполнения пользовательской очистки или ведения журнала.

Доступные крючки

Доступны следующие azd перехватчики команд:

  • prerestore и postrestore: восстановление зависимостей пакета до и после них.
  • preprovision и postprovision: запуск до и после создания ресурсов Azure.
  • predeploy и postdeploy: запуск до и после развертывания кода приложения в Azure.
  • preup и postup: запуск до и после объединенного конвейера развертывания. Up— это сокращенная команда, которая выполняется restoreи deployprovisionпоследовательно.
  • predown и postdown: запуск до и после удаления ресурсов.

Доступны следующие перехватчики событий жизненного цикла службы:

  • prerestore и postrestore: запуск до и после восстановления пакетов служб и зависимостей.
  • prepackage и postpackage: запуск до и после упаковки приложения для развертывания.
  • predeploy и postdeploy: запуск до и после развертывания кода службы в Azure.

Конфигурация перехватчика

Перехватчики можно зарегистрировать в файле в azure.yaml корневом каталоге или в определенной конфигурации службы. Все типы перехватчиков поддерживают следующие параметры конфигурации:

  • shell: sh | pwsh (автоматически выводится из запуска, если он не указан).
    • Примечание. Для PowerShell 7 требуется pwsh.
  • 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

Использование переменных среды с перехватчиками

Перехватчики могут получать и задавать переменные среды в .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, посетите страницу устранения неполадок и поддержки .