Komut ve olay kancalarını kullanarak Azure Geliştirici CLI iş akışlarınızı özelleştirme
Azure Geliştirici CLI'sı, iş akışlarınızı ve dağıtımlarınızı özelleştirmek için çeşitli uzantı noktalarını destekler. Kanca ara yazılımı, komutları ve hizmet yaşam döngüsü olaylarını azd
önce ve sonra özel betikler yürütmenize olanak tanır. kancalar, ön kullanarak adlandırma kuralını izler ve eşleşen azd
komutu veya hizmet olayı adına ön ekleri.
Örneğin, aşağıdaki senaryolarda özel bir betik çalıştırmak isteyebilirsiniz:
- Bağımlılık yönetimini özelleştirmek için prerestore kancasını kullanın.
- Uygulamanızı dağıtmadan önce dış bağımlılıkların veya özel yapılandırmaların mevcut olduğunu doğrulamak için ön dağıtım kancasını kullanın.
- Özel temizleme veya günlük kaydı gerçekleştirmek için bir iş akışının veya işlem hattının sonundaki postup kancasını kullanın.
Kullanılabilir kancalar
Aşağıdaki azd
komut kancaları kullanılabilir:
-
prerestore
vepostrestore
: Paket bağımlılıkları geri yüklenmeden önce ve sonra çalıştırın. -
preprovision
vepostprovision
: Azure kaynakları oluşturulmadan önce ve sonra çalıştırın. -
predeploy
vepostdeploy
: Uygulama kodu Azure'a dağıtılmadan önce ve sonra çalıştırın. -
preup
vepostup
: Birleşik dağıtım işlem hattından önce ve sonra çalıştırın.Up
,restore
,provision
ve sırayladeploy
çalıştıran bir kısaltma komutudur. -
predown
vepostdown
: Kaynaklar kaldırılmadan önce ve sonra çalıştırın.
Aşağıdaki hizmet yaşam döngüsü olay kancaları kullanılabilir:
-
prerestore
vepostrestore
: Hizmet paketleri ve bağımlılıkları geri yüklenmeden önce ve sonra çalıştırın. -
prebuild
vepostbuild
: Hizmet kaynak kodu veya kapsayıcısı oluşturulduktan önce ve sonra çalıştırın. -
prepackage
vepostpackage
: Uygulama dağıtım için paketlenmiş durumdan önce ve sonra çalıştırın. -
predeploy
vepostdeploy
: Hizmet kodu Azure'a dağıtılmadan önce ve sonra çalıştırın.
Kanca yapılandırması
Kancalar kökteki azure.yaml
dosyanıza veya belirli bir hizmet yapılandırmasına kaydedilebilir. Tüm kanca türleri aşağıdaki yapılandırma seçeneklerini destekler:
-
shell
:sh
|pwsh
-
Not:
pwsh
için PowerShell 7 gereklidir.
-
Not:
-
run
: Satır içi betik veya dosya yolu tanımlayın. -
continueOnError
: Ayarlandığında, komut kancası sırasında bir betik hatası oluştuktan sonra bile yürütülmeye devam eder (varsayılan false). -
interactive
: Ayarlandığında, çalışan betiğistdin
konsoluna bağlarstdout
&stderr
(varsayılan false). -
windows
: İç içe yapılandırmaların yalnızca windows işletim sisteminde uygulanacağını belirtir. Bu yapılandırma seçeneği dışlanırsa, kanca tüm platformlarda yürütülür. -
posix
: İç içe yapılandırmaların yalnızca POSIX tabanlı işletim sistemlerine (Linux & MaxOS) uygulanacağını belirtir. Bu yapılandırma seçeneği dışlanırsa, kanca tüm platformlarda yürütülür.
Kanca örnekleri
Aşağıdaki örneklerde farklı türlerdeki kanca kayıtları ve yapılandırmaları gösterilmektedir.
Kök komut kaydı
Kancalar, azure.yaml
dosyanızın kökündeki belirli azd
komutları için çalışacak şekilde yapılandırılabilir.
Proje dizini (azure.yaml
dosyasının bulunduğu yer), komut kancaları için varsayılan geçerli çalışma dizinidir (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
Hizmet kaydı
Kancalar yalnızca .yaml
dosyanızda tanımlanan belirli hizmetler için çalışacak şekilde de yapılandırılabilir.
Hizmet dizini (azure.yaml
dosyasındaki hizmet yapılandırmasının project
özelliğinde tanımlanan yol), hizmet kancaları için varsayılan 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
İşletim sistemine özgü kancalar
İsteğe bağlı olarak, kancalar Windows veya Posix'te (Linux & MaxOS) çalışacak şekilde de yapılandırılabilir. Varsayılan olarak, Windows veya Posix yapılandırmaları dışlanırsa kanca tüm platformlarda yürütülür.
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
Olay başına birden çok kanca
Kök kayıt düzeyi veya belirli bir hizmet gibi farklı kapsamlarda olay başına birden çok kanca yapılandırabilirsiniz:
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
Ortam değişkenlerini kancalarla kullanma
Kancalar, azd env get-values
ve azd set <key> <value>
komutlarını kullanarak .env
dosyasında ortam değişkenlerini alabilir ve ayarlayabilir. Kancalar, ${YOUR_ENVIRONMENT VARIABLE}
söz dizimini kullanarak yerel ortamınızdan ortam değişkenlerini de alabilir.
azd
, AZURE_ENV_NAME
ve AZURE_LOCATION
gibi komutlar çalıştırıldığında .env
dosyasındaki belirli ortam değişkenlerini otomatik olarak ayarlar.
main.bicep
dosyasındaki çıkış parametreleri de .env
dosyasında ayarlanır. ortam değişkenlerini yönetme sayfası, ortam değişkeni iş akışları hakkında daha fazla bilgi içerir.
Kancalar, aşağıdaki örnekte gösterildiği gibi ortam değişkenlerini satır içinde veya başvuruda bulunan betikler aracılığıyla alabilir ve ayarlayabilir:
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}
Başvuruda bulunan: prepdocs.sh
betiği:
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
Yardım isteme
Azure Geliştirici CLI'sı için hata oluşturma, yardım isteme veya yeni bir özellik önerme hakkında bilgi için lütfen sorun giderme ve destek sayfasını ziyaret edin.