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
ipostrestore
: Uruchom przed i po przywróceniu zależności pakietu. -
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ótowe polecenie, które uruchamiarestore
,provision
ideploy
sekwencyjnie. -
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. -
prebuild
ipostbuild
: uruchom polecenie przed i po skompilowany kod źródłowy usługi lub kontener. -
prepackage
ipostpackage
: Uruchom przed i po spakowanym na potrzeby wdrożenia aplikacji. -
predeploy
ipostdeploy
: 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
.
-
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
: 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 .