Bagikan melalui


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 dan postrestore: Jalankan sebelum dan sesudah dependensi paket dipulihkan.
  • preprovision dan postprovision: Jalankan sebelum dan sesudah sumber daya Azure dibuat.
  • predeploy dan postdeploy: Jalankan sebelum dan sesudah kode aplikasi disebarkan ke Azure.
  • preup dan postup: Jalankan sebelum dan sesudah alur penyebaran gabungan. Up adalah perintah singkat yang menjalankan restore, provision, dan deploy secara berurutan.
  • predown dan postdown: Jalankan sebelum dan sesudah sumber daya dihapus.

Kait peristiwa siklus hidup layanan berikut tersedia:

  • prerestore dan postrestore: Jalankan sebelum dan sesudah paket layanan dan dependensi dipulihkan.
  • prebuild dan postbuild: Jalankan sebelum dan sesudah kode sumber layanan atau kontainer dibuat.
  • prepackage dan postpackage: Jalankan sebelum dan sesudah aplikasi dipaketkan untuk penyebaran.
  • predeploy dan postdeploy: 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.
  • 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 konsol stdin, 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.