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
ipostrestore
: Uruchom przed i po przywróceniu zależności pakietów.preprovision
ipostprovision
: Uruchom przed i po utworzeniu zasobów platformy Azure.predeploy
ipostdeploy
: Uruchom przed i po wdrożeniu kodu aplikacji na platformie Azure.preup
ipostup
: Uruchom przed i po połączonym potoku wdrażania.Up
to skrócone polecenie uruchamiającerestore
sekwencyjnie ,provision
ideploy
.predown
ipostdown
: Uruchom przed i po usunięciu zasobów.
Dostępne są następujące punkty zaczepienia zdarzeń cyklu życia usługi:
prerestore
ipostrestore
: Uruchom przed i po przywróceniu pakietów usług i zależności.prepackage
ipostpackage
: Uruchom przed i po spakowanej aplikacji na potrzeby wdrożenia.predeploy
ipostdeploy
: 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
.
- Uwaga: program PowerShell 7 jest wymagany dla programu
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
istderr
(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 .