Aracılığıyla paylaş


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 ve postrestore: Paket bağımlılıkları geri yüklenmeden önce ve sonra çalıştırın.
  • preprovision ve postprovision: Azure kaynakları oluşturulmadan önce ve sonra çalıştırın.
  • predeploy ve postdeploy: Uygulama kodu Azure'a dağıtılmadan önce ve sonra çalıştırın.
  • preup ve postup: Birleşik dağıtım işlem hattından önce ve sonra çalıştırın. Up, provisionve deploy komutlarını sıralı olarak çalıştıran restorebir kısaltma komutudur.
  • predown ve postdown: 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 ve postrestore: Hizmet paketleri ve bağımlılıkları geri yüklenmeden önce ve sonra çalıştırın.
  • prepackage ve postpackage: Uygulama dağıtım için paketlenmiş durumdan önce ve sonra çalıştırın.
  • predeploy ve postdeploy: 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 pwshgereklidir.
  • 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 konsoluna stdin, stdout ve stderr (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 projectazure.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. azdve AZURE_LOCATIONgibi 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.