Пытаюсь автоматизировать развертывание с помощью PowerShell, потому что у меня несколько конечных точек.
В итоге я создал этот файл ps1
param(
[string]$subscriptionId,
[string]$resourceGroup,
[string[]]$functionAppNames,
[bool]$build = $true,
[bool]$deleteBuild = $true
)
clear
if ($build) {
# # Build your NestJS app
npm run build
# Zip it up
powershell Compress-Archive -Path .\dist\* -Update -DestinationPath dist.zip # slow...
# & "C:\Program Files\7-Zip\7z.exe" a -r "dist.zip" ".\dist\*"
}
# Login to Azure and set the subscription
az login
az account set --subscription $subscriptionId
# Publish to each function app
foreach ($functionAppName in $functionAppNames) {
Write-Host "Deploying to function app: $functionAppName"
az functionapp config appsettings set --name $functionAppName --resource-group $resourceGroup --settings "SCM_DO_BUILD_DURING_DEPLOYMENT=true"
az functionapp config appsettings set --name $functionAppName --resource-group $resourceGroup --settings "WEBSITE_RUN_FROM_PACKAGE=1"
# tried both with no success...
az functionapp deployment source config-zip -g $resourceGroup -n $functionAppName --src .\dist.zip
# Publish-AzWebapp -ResourceGroupName $ResourceGroup -Name $functionAppName -ArchivePath .\dist.zip
}
if ($deleteBuild) {
Remove-Item .\dist.zip
Remove-Item .\dist\ -Recurse
}
Но по какой-то причине после завершения развертывания в моем приложении-функции нет функций.
ОС: Windows План: Потребление
PS: Если я выполняю развертывание с помощью Visual Code (ctrl + P и выбираю экземпляр), все работает нормально. Я хочу повторить те же шаги, но не могу найти способ заставить это работать.





AFAIK, для функции Azure не существует командного сценария build, который создает папку dist. Чтобы функция Azure работала, необходимо заархивировать весь проект со всеми файлами.
Эта команда сработала для меня, поскольку я развертываю триггер HTTP.
Мой каталог:

Код:
Без названия1.ps1:
param(
[string]$subscriptionId= "<subscription_ID>",
[string]$resourceGroup = "<resourceGroup_Name>",
[string[]]$functionAppNames = "<functionApp_name>",
[bool]$build = $true,
[bool]$deleteBuild = $true
)
clear
if ($build) {
npm install
powershell Compress-Archive -Path .\* -Update -DestinationPath dist.zip
}
az login
az account set --subscription $subscriptionId
foreach ($functionAppName in $functionAppNames) {
Write-Host "Deploying to function app: $functionAppName"
az functionapp config appsettings set --name $functionAppName --resource-group $resourceGroup --settings "SCM_DO_BUILD_DURING_DEPLOYMENT=true"
az functionapp config appsettings set --name $functionAppName --resource-group $resourceGroup --settings "WEBSITE_RUN_FROM_PACKAGE=1"
az functionapp deployment source config-zip -g $resourceGroup -n $functionAppName --src .\dist.zip
}
if ($deleteBuild) {
Remove-Item .\dist.zip
Remove-Item .\dist\ -Recurse
}
Выход :

Лазурный портал:
Я смог увидеть свою функцию в приложении «Функция Azure».
