Megosztás a következőn keresztül:


Az Azure Developer CLI munkafolyamatainak testreszabása parancs- és eseményhookok használatával

Az Azure Developer CLI számos bővítménypontot támogat a munkafolyamatok és az üzemelő példányok testreszabásához. A hooks köztes szoftver lehetővé teszi egyéni szkriptek végrehajtását a parancsok és a szolgáltatás életciklusának eseményei előtt és után azd . a horgok egy elnevezési konvenciót követnek, amely elő- és utótagokat használ a megfelelő azd parancs vagy szolgáltatásesemény nevére.

Előfordulhat például, hogy egyéni szkriptet szeretne futtatni a következő forgatókönyvekben:

  • A függőségkezelés testreszabásához használja a prerestore horgot.
  • Az alkalmazás üzembe helyezése előtt az előre üzembehelyezési kampóval ellenőrizheti, hogy vannak-e külső függőségek vagy egyéni konfigurációk.
  • A munkafolyamat vagy folyamat végén található postup horoggal egyéni törlést vagy naplózást végezhet.

Elérhető horgok

A következő azd parancshookok érhetők el:

  • prerestore és postrestore: Futtassa a csomagfüggőségek visszaállítása előtt és után.
  • preprovision és postprovision: Futtassa az Azure-erőforrások létrehozása előtt és után.
  • predeploy és postdeploy: Futtassa az alkalmazáskódot az Azure-ban való üzembe helyezés előtt és után.
  • preup és postup: Futtassa a kombinált üzembehelyezési folyamat előtt és után. Upegy rövidített parancs, amely szekvenciálisan futrestoreprovisiondeploy.
  • predown és postdown: Futtassa az erőforrások eltávolítása előtt és után.

A következő szolgáltatás életciklus-eseményhookok érhetők el:

  • prerestore és postrestore: Futtassa a szolgáltatáscsomagok és függőségek visszaállítása előtt és után.
  • prepackage és postpackage: Futtatás az alkalmazás üzembe helyezéshez való csomagolása előtt és után.
  • predeploy és postdeploy: Futtassa a szolgáltatáskódot az Azure-ban való üzembe helyezés előtt és után.

Horogkonfiguráció

A horgok regisztrálhatók a azure.yaml fájlban a gyökérkiszolgálón vagy egy adott szolgáltatáskonfiguráción belül. A horgok minden típusa támogatja a következő konfigurációs beállításokat:

  • shell: sh | pwsh (ha nincs megadva, a futtatásból automatikusan következtet).
    • Megjegyzés: A PowerShell 7 szükséges a pwsh.
  • run: Beágyazott szkript vagy fájl elérési útja definiálása.
  • continueOnError: Ha a beállítás akkor is folytatódik, ha szkripthiba történt a parancshook során (alapértelmezett hamis).
  • interactive: Ha a beállítás a futó szkriptet a konzolhoz stdinköti, stdout & stderr (alapértelmezett hamis).
  • windows: Azt adja meg, hogy a beágyazott konfigurációk csak Windows operációs rendszerre lesznek érvényesek. Ha ez a konfigurációs lehetőség nincs kizárva, a horog minden platformon végrehajtható.
  • posix: Azt adja meg, hogy a beágyazott konfigurációk csak POSIX-alapú OSes-ekre (Linux & MaxOS) lesznek érvényesek. Ha ez a konfigurációs lehetőség nincs kizárva, a horog minden platformon végrehajtható.

Példák horogra

Az alábbi példák a horogregisztrációk és -konfigurációk különböző típusait mutatják be.

Fő parancsregisztráció

A horgok konfigurálhatók úgy, hogy a azd fájl gyökerében meghatározott parancsokhoz fussanak azure.yaml .

A projektkönyvtár (ahol a azure.yaml fájl található) a parancshookok alapértelmezett aktuális munkakönyvtára (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

Szolgáltatásregisztráció

A horgok úgy is konfigurálhatók, hogy csak a .yaml fájlban meghatározott szolgáltatásokhoz fussanak.

A szolgáltatáskönyvtár (a fájl szolgáltatáskonfigurációjának tulajdonságában projectazure.yaml definiált elérési út) a szolgáltatáshookok alapértelmezett értéke 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

Operációsrendszer-specifikus horgok

A horgok konfigurálhatók Windows vagy Posix rendszeren (Linux & MaxOS) is. Alapértelmezés szerint, ha a Windows- vagy Posix-konfigurációk nincsenek kizárva, a horog minden platformon végrehajtva lesz.

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

Környezeti változók használata horgokkal

A horgok a parancsok és azd set <key> <value> a parancsok használatával lekérhetik és beállíthatják a fájlban lévő .envazd env get-values környezeti változókat. A horgok a szintaxis használatával is lekérhetik a környezeti változókat a ${YOUR_ENVIRONMENT VARIABLE} helyi környezetből. azd a parancsok futtatásakor automatikusan beállít bizonyos környezeti változókat a .env fájlban, például AZURE_ENV_NAME és AZURE_LOCATION. A fájl kimeneti main.bicep paraméterei is be vannak állítva a .env fájlban. A környezeti változók kezelése lap további információkat tartalmaz a környezeti változók munkafolyamatairól.

A horgok a környezeti változókat beágyazottan vagy hivatkozott szkripteken keresztül is lekérhetik és beállíthatják, ahogy az a következő példában is látható:

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}

A hivatkozott: prepdocs.sh szkript:

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

Segítség kérése

Ha tudni szeretné, hogyan nyújthat be hibát, kérhet segítséget, vagy javasolhat új funkciót az Azure Developer CLI-hez, látogasson el a hibaelhárítási és támogatási oldalra.