Dostosowywanie przepływów pracy interfejsu wiersza polecenia dla deweloperów platformy Azure przy użyciu poleceń i punktów zaczepienia zdarzeń

Interfejs wiersza polecenia dla deweloperów platformy Azure obsługuje różne punkty rozszerzenia, aby dostosować przepływy pracy i wdrożenia. Oprogramowanie pośredniczące haków umożliwia wykonywanie niestandardowych skryptów przed poleceniami i po nim oraz zdarzeniami azd cyklu życia usługi. haki są zgodne z konwencją nazewnictwa przy użyciu prefiksów prefiksów i słupków w pasującym azd poleceniu lub nazwie zdarzenia usługi.

Na przykład możesz chcieć uruchomić skrypt niestandardowy w następujących scenariuszach:

  • Użyj przypinacza magazynu wstępnego, aby dostosować zarządzanie zależnościami.
  • Użyj przypinania wstępnego, aby sprawdzić, czy zależności zewnętrzne lub konfiguracje niestandardowe są wdrożone przed wdrożeniem aplikacji.
  • Użyj łącznika postup na końcu przepływu pracy lub potoku, aby wykonać niestandardowe czyszczenie lub rejestrowanie.

Dostępne haki

Dostępne są następujące azd zaczepienia poleceń:

  • prerestore i postrestore: Uruchom przed i po przywróceniu zależności pakietów.
  • preprovision i postprovision: Uruchom przed i po utworzeniu zasobów platformy Azure.
  • predeploy i postdeploy: Uruchom przed i po wdrożeniu kodu aplikacji na platformie Azure.
  • preup i postup: Uruchom przed i po połączonym potoku wdrażania. Up to skrócone polecenie uruchamiające restoresekwencyjnie , provisioni deploy .
  • predown i postdown: Uruchom przed i po usunięciu zasobów.

Dostępne są następujące punkty zaczepienia zdarzeń cyklu życia usługi:

  • prerestore i postrestore: Uruchom przed i po przywróceniu pakietów usług i zależności.
  • prepackage i postpackage: Uruchom przed i po spakowanej aplikacji na potrzeby wdrożenia.
  • predeploy i postdeploy: Uruchom przed i po wdrożeniu kodu usługi na platformie Azure.

Konfiguracja punktów zaczepienia

Punkty zaczepienia można zarejestrować w azure.yaml pliku w katalogu głównym lub w określonej konfiguracji usługi. Wszystkie typy punktów zaczepienia obsługują następujące opcje konfiguracji:

  • shell: sh | pwsh (automatycznie wnioskowane z przebiegu, jeśli nie określono).
    • Uwaga: program PowerShell 7 jest wymagany dla programu pwsh.
  • run: Zdefiniuj wbudowany skrypt lub ścieżkę do pliku.
  • continueOnError: Po ustawieniu będzie nadal wykonywane nawet po wystąpieniu błędu skryptu podczas haka poleceń (wartość domyślna false).
  • interactive: Po ustawieniu zostanie powiązany uruchomiony skrypt z konsolą stdin, stdout i stderr (wartość domyślna false).
  • windows: określa, że konfiguracje zagnieżdżone będą stosowane tylko w systemie operacyjnym Windows. Jeśli ta opcja konfiguracji zostanie wykluczona, punkt zaczepienia jest wykonywany na wszystkich platformach.
  • posix: Określa, że zagnieżdżone konfiguracje będą miały zastosowanie tylko do systemów operacyjnych opartych na systemie OPERACYJNYM POSIX (Linux i MaxOS). Jeśli ta opcja konfiguracji zostanie wykluczona, punkt zaczepienia jest wykonywany na wszystkich platformach.

Przykłady punktów zaczepienia

W poniższych przykładach przedstawiono różne typy rejestracji i konfiguracji punktów zaczepienia.

Rejestracja poleceń głównych

Haki można skonfigurować do uruchamiania dla określonych azd poleceń w katalogu głównym azure.yaml pliku.

Katalog projektu (gdzie azure.yaml znajduje się plik) jest domyślnym bieżącym katalogiem roboczym (cwd) dla punktów zaczepienia poleceń.

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

Rejestracja usługi

Haki można również skonfigurować do uruchamiania tylko dla określonych usług zdefiniowanych w .yaml pliku.

Katalog usługi (taka sama ścieżka jak zdefiniowana we project właściwości konfiguracji usługi w azure.yaml pliku) jest domyślnym cwd elementem zaczepienia usługi.

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

Haki specyficzne dla systemu operacyjnego

Opcjonalnie można również skonfigurować haki do uruchamiania w systemie Windows lub Posix (Linux i MaxOS). Domyślnie, jeśli konfiguracje systemu Windows lub Posix są wykluczone, punkt zaczepienia jest wykonywany na wszystkich platformach.

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

Używanie zmiennych środowiskowych z punktami zaczepienia

Haki mogą pobierać i ustawiać zmienne środowiskowe w .env pliku przy użyciu azd env get-values poleceń i azd set <key> <value> . Haki mogą również pobierać zmienne środowiskowe ze środowiska lokalnego ${YOUR_ENVIRONMENT VARIABLE} przy użyciu składni . azd automatycznie ustawia pewne zmienne środowiskowe w .env pliku, gdy są uruchamiane polecenia, takie jak AZURE_ENV_NAME i AZURE_LOCATION. Parametry wyjściowe z main.bicep pliku są również ustawiane w .env pliku. Strona Zarządzanie zmiennymi środowiskowymi zawiera więcej informacji na temat przepływów pracy zmiennych środowiskowych.

Haki mogą pobierać i ustawiać zmienne środowiskowe w tekście lub za pomocą skryptów, do których odwołuje się odwołanie, jak pokazano w poniższym przykładzie:

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}

Przywołyżony skrypt: 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

Zażądaj pomocy

Aby uzyskać informacje na temat tworzenia usterki, żądania pomocy lub zaproponowania nowej funkcji dla interfejsu wiersza polecenia dla deweloperów platformy Azure, odwiedź stronę rozwiązywania problemów i pomocy technicznej .