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ı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 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, restore, provisionve sırayla deploy çalıştıran bir 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.
  • prebuild ve postbuild: Hizmet kaynak kodu veya kapsayıcısı oluşturulduktan ö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 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: pwshiçin PowerShell 7 gereklidir.
  • 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ği stdinkonsoluna bağlar stdout & 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_LOCATIONgibi 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.