Mengkustomisasi alur kerja Azure Developer CLI Anda menggunakan perintah dan hook peristiwa
Azure Developer CLI mendukung berbagai titik ekstensi untuk menyesuaikan alur kerja dan penyebaran Anda. Middleware kait memungkinkan Anda menjalankan skrip kustom sebelum dan sesudah azd
perintah dan peristiwa siklus hidup layanan. hook mengikuti konvensi penamaan menggunakan pre dan prefiks post pada perintah azd
yang 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:
-
prerestore
danpostrestore
: Jalankan sebelum dan sesudah dependensi paket dipulihkan. -
preprovision
danpostprovision
: Jalankan sebelum dan sesudah sumber daya Azure dibuat. -
predeploy
danpostdeploy
: Jalankan sebelum dan sesudah kode aplikasi disebarkan ke Azure. -
preup
danpostup
: Jalankan sebelum dan sesudah alur penyebaran gabungan.Up
adalah perintah singkat yang menjalankanrestore
,provision
, dandeploy
secara berurutan. -
predown
danpostdown
: Jalankan sebelum dan sesudah sumber daya dihapus.
Kait peristiwa siklus hidup layanan berikut tersedia:
-
prerestore
danpostrestore
: Jalankan sebelum dan sesudah paket layanan dan dependensi dipulihkan. -
prebuild
danpostbuild
: Jalankan sebelum dan sesudah kode sumber layanan atau kontainer dibuat. -
prepackage
danpostpackage
: Jalankan sebelum dan sesudah aplikasi dipaketkan untuk penyebaran. -
predeploy
danpostdeploy
: Jalankan sebelum dan sesudah kode layanan disebarkan ke Azure.
Konfigurasi hook
Hook dapat didaftarkan dalam file azure.yaml
Anda 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
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.