Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Hook adalah azd titik ekstensi yang secara otomatis menjalankan skrip kustom sebelum dan sesudah azd perintah dan peristiwa siklus hidup layanan. Hook mengikuti konvensi penamaan menggunakan awalan pra dan pasca pada perintah yang azd cocok atau nama peristiwa layanan.
Misalnya, Anda mungkin ingin menjalankan skrip kustom dalam skenario berikut:
- Gunakan kait prerestore untuk menyesuaikan manajemen dependensi.
- Gunakan predeploy hook untuk memverifikasi dependensi eksternal atau konfigurasi kustom yang ada sebelum menyebarkan aplikasi Anda.
- Gunakan postup kait di akhir alur kerja atau alur untuk melakukan pembersihan atau pengelogan kustom.
Kait yang tersedia
Kait perintah azd berikut ini tersedia:
-
prerestoredanpostrestore: Jalankan sebelum dan sesudah dependensi paket dipulihkan. -
preprovisiondanpostprovision: Jalankan sebelum dan sesudah sumber daya Azure dibuat. -
prepackagedanpostpackage: Jalankan sebelum dan sesudah aplikasi dimas. -
predeploydanpostdeploy: Jalankan sebelum dan sesudah kode aplikasi disebarkan ke Azure. -
prepublishdanpostpublish: Jalankan sebelum dan sesudah aplikasi diterbitkan. -
preupdanpostup: Jalankan sebelum dan sesudah alur penyebaran gabungan.Upadalah perintah singkat yang menjalankanrestore,provision, dandeploysecara berurutan. -
predowndanpostdown: Jalankan sebelum dan sesudah sumber daya dihapus.
Kait peristiwa siklus hidup layanan berikut tersedia:
-
prerestoredanpostrestore: Jalankan sebelum dan sesudah paket layanan dan dependensi dipulihkan. -
prebuilddanpostbuild: Jalankan sebelum dan sesudah kode sumber layanan atau kontainer dibuat. -
prepackagedanpostpackage: Jalankan sebelum dan sesudah aplikasi dipaketkan untuk penyebaran. -
predeploydanpostdeploy: Jalankan sebelum dan sesudah kode layanan disebarkan ke Azure. -
prepublishdanpostpublish: Jalankan sebelum dan sesudah layanan diterbitkan.
Konfigurasi hook
Hook terdaftar dalam file Anda azure.yaml di root atau dalam konfigurasi layanan tertentu. Semua jenis kait mendukung opsi konfigurasi berikut:
-
shell:sh|pwsh-
Catatan: PowerShell 7 diperlukan untuk
pwsh.
-
Catatan: PowerShell 7 diperlukan untuk
-
run: Tentukan skrip sebaris atau jalur ke file. -
continueOnError: Ketika diatur akan terus dijalankan bahkan setelah kesalahan skrip terjadi selama hook perintah (default false). -
interactive: Saat diatur akan mengikat skrip yang sedang berjalan ke konsolstdin,stdout&stderr(default false). -
windows: Menentukan bahwa konfigurasi berlapis hanya akan berlaku pada OS windows. Jika opsi konfigurasi ini dikecualikan, kait dijalankan di semua platform. -
posix: Menentukan bahwa konfigurasi berlapis hanya akan berlaku untuk OSes berbasis POSIX (Linux & MaxOS). Jika opsi konfigurasi ini dikecualikan, kait dijalankan di semua platform.
Contoh hook
Contoh berikut menunjukkan berbagai jenis pendaftaran dan konfigurasi kait.
Pendaftaran perintah root
Hook dapat dikonfigurasi untuk dijalankan untuk perintah azd tertentu di akar file azure.yaml Anda.
Direktori proyek (tempat file azure.yaml berada) adalah direktori kerja default saat ini (cwd) untuk kait perintah.
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
Pendaftaran layanan
Hook juga dapat dikonfigurasi untuk dijalankan hanya untuk layanan tertentu yang ditentukan dalam file .yaml Anda.
Direktori layanan (jalur yang sama seperti yang didefinisikan dalam properti project konfigurasi layanan dalam file azure.yaml) adalah cwd default untuk hook layanan.
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
Kait khusus OS
Secara opsional, kait juga dapat dikonfigurasi untuk berjalan baik di Windows atau Posix (Linux & MaxOS). Secara default, jika konfigurasi Windows atau Posix dikecualikan, kait dijalankan di semua platform.
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
Beberapa kait per peristiwa
Anda dapat mengonfigurasi beberapa kait per peristiwa di berbagai cakupan, seperti tingkat pendaftaran akar atau untuk layanan tertentu:
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
Jalankan kait secara independen
Perintah ini azd hooks run memungkinkan Anda untuk mengeksekusi kait secara independen dari peristiwa pemicu normal mereka. Ini berguna untuk menguji dan men-debug kait tanpa melalui seluruh alur kerja.
azd hooks run <hook-name>
Ganti <hook-name> dengan nama hook yang ingin Anda jalankan (misalnya, preprovision, postdeploy).
Opsi tingkat lanjut
# 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
Mengonfigurasi mode interaktif
Hook berjalan dalam mode interaktif secara default. Mode kait interaktif memungkinkan Anda menjalankan skrip kait dengan interaksi konsol langsung, sehingga lebih mudah untuk men-debug, memantau, dan berinteraksi dengan kait Anda secara real-time. Anda dapat secara eksplisit mengatur interactive properti dalam konfigurasi kait jika Anda ingin menonaktifkan mode interaktif untuk hook tertentu:
hooks:
postprovision:
shell: sh
run: ./scripts/setup-database.sh
interactive: false # Default is true
Untuk kait khusus layanan:
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
Menggunakan variabel lingkungan dengan kait
Hook bisa mendapatkan dan mengatur variabel lingkungan dalam file .env menggunakan perintah azd env get-values dan azd set <key> <value>. Hook juga dapat mengambil variabel lingkungan dari lingkungan lokal Anda menggunakan sintaks ${YOUR_ENVIRONMENT VARIABLE}.
azd secara otomatis mengatur variabel lingkungan tertentu dalam file .env saat perintah dijalankan, seperti AZURE_ENV_NAME dan AZURE_LOCATION. Parameter output dari file main.bicep juga diatur dalam file .env. Halaman mengelola variabel lingkungan menyertakan informasi selengkapnya tentang alur kerja variabel lingkungan.
Kait bisa mendapatkan dan mengatur variabel lingkungan sebaris atau melalui skrip yang dirujuk, seperti yang ditunjukkan dalam contoh berikut:
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}
Skrip yang dirujuk: 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
Minta bantuan
Untuk informasi tentang cara mengajukan bug, meminta bantuan, atau mengusulkan fitur baru untuk Azure Developer CLI, silakan kunjungi halaman pemecahan masalah dan dukungan.