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ından önce ve sonra azd
özel betikler yürütmenize olanak tanır. kancalar, eşleşen azd
komut veya hizmet olay adında önekleri kullanarak adlandırma kuralını izler.
Ö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 yerinde 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
,provision
vedeploy
komutlarını sıralı olarak çalıştıranrestore
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.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, dosyanıza azure.yaml
kökte veya belirli bir hizmet yapılandırmasında kaydedilebilir. Tüm kanca türleri aşağıdaki yapılandırma seçeneklerini destekler:
shell
:sh
|pwsh
(belirtilmezse çalıştırmadan otomatik olarak çıkarılır).- Not: PowerShell 7 için
pwsh
gereklidir.
- Not: PowerShell 7 için
run
: Satır içi betik veya dosya yolu tanımlayın.continueOnError
: Bir komut kancası (varsayılan false) sırasında bir betik hatası oluştuktan sonra bile küme yürütülmeye devam eder.interactive
: Ayarlandığında, çalışan betik konsolunastdin
,stdout
vestderr
(varsayılan false) bağlanır.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, dosyanızın azure.yaml
kökündeki belirli azd
komutlar için çalışacak şekilde yapılandırılabilir.
Proje dizini (dosyanın bulunduğu yer azure.yaml
), 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 dosyanızda .yaml
tanımlanan belirli hizmetler için çalışacak şekilde de yapılandırılabilir.
Hizmet dizini (dosyadaki hizmet yapılandırmasının özelliğinde project
azure.yaml
tanımlanan yol), hizmet kancaları için varsayılandır 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
Ortam değişkenlerini kancalarla kullanma
Kancalar ve komutlarını kullanarak azd env get-values
dosyadaki .env
ortam değişkenlerini alabilir ve azd set <key> <value>
ayarlayabilir. Kancalar, söz dizimini ${YOUR_ENVIRONMENT VARIABLE}
kullanarak yerel ortamınızdan ortam değişkenlerini de alabilir. azd
ve AZURE_LOCATION
gibi komutlar çalıştırıldığında dosyadaki .env
belirli ortam değişkenlerini otomatik olarak AZURE_ENV_NAME
ayarlar. Dosyasından main.bicep
çıkış parametreleri de dosyada .env
ayarlanır. Ortam değişkenlerini yönet 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
betik:
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.