Udostępnij za pośrednictwem


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 i po azd poleceniach i zdarzeniach cyklu życia usługi. haki są zgodne z konwencją nazewnictwa przy użyciu pre i prefiksów prefiksów na pasujących azd polecenia lub nazwy zdarzenia usługi.

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

  • Użyj wstępnie haka magazynu, aby dostosować zarządzanie zależnościami.
  • Przed wdrożeniem aplikacji należy użyć wstępnego przypinania , aby sprawdzić, czy zależności zewnętrzne lub konfiguracje niestandardowe zostały wdrożone.
  • Użyj postup hook 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 pakietu.
  • 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ótowe polecenie, które uruchamia restore, provisioni deploy sekwencyjnie.
  • 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.
  • prebuild i postbuild: uruchom polecenie przed i po skompilowany kod źródłowy usługi lub kontener.
  • prepackage i postpackage: Uruchom przed i po spakowanym na potrzeby wdrożenia aplikacji.
  • 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 pliku azure.yaml w katalogu głównym lub w ramach określonej konfiguracji usługi. Wszystkie typy punktów zaczepienia obsługują następujące opcje konfiguracji:

  • shell: sh | pwsh
    • 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: ustawienie powiąże uruchomiony skrypt z konsolą stdin, stdout & stderr (wartość domyślna false).
  • windows: określa, że zagnieżdżone konfiguracje 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 & 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 poleceń azd w katalogu głównym pliku azure.yaml.

Katalog projektu (gdzie znajduje się plik azure.yaml) 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 pliku .yaml.

Katalog usługi (taka sama ścieżka jak zdefiniowana we właściwości project konfiguracji usługi w pliku azure.yaml) jest domyślną cwd dla punktów 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 & 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

Wiele punktów zaczepienia na zdarzenie

Można skonfigurować wiele punktów zaczepienia na zdarzenie w różnych zakresach, takich jak poziom rejestracji głównej lub dla określonej usługi:

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

Używanie zmiennych środowiskowych z punktami zaczepienia

Haki mogą pobierać i ustawiać zmienne środowiskowe w pliku .env przy użyciu poleceń azd env get-values i azd set <key> <value>. Haki mogą również pobierać zmienne środowiskowe ze środowiska lokalnego przy użyciu składni ${YOUR_ENVIRONMENT VARIABLE}. azd automatycznie ustawia pewne zmienne środowiskowe w pliku .env podczas uruchamiania poleceń, takich jak AZURE_ENV_NAME i AZURE_LOCATION. Parametry wyjściowe z pliku main.bicep są również ustawiane w pliku .env. Strona zarządzania 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}

Odwołany 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 .