通过DevOps Pipeline检查Azure中FunctionApp上存在的函数



在Azure DevOps上,我有一个构建/部署YAML管道,它构建我的函数应用程序并将其部署到Azure中的Linux函数应用程序(托管在应用程序-服务计划上)。

然而,最近我注意到一个问题,管道显示功能应用程序已成功部署,但当进入Azure中的FunctionApp并单击左侧的Functions选项卡时,它显示"没有结果",但应该有4个函数在那里。

我想在部署管道的末尾有一个步骤,检查这个FunctionApp中是否存在4个函数,如果不是这种情况,管道运行失败。

我知道这很可能是使用Azure CLI或Powershell的管道中的任务,但不确定我将如何编写脚本。如有任何帮助,我将不胜感激。

谢谢,

你可以使用Azure CLI任务并调用Rest API来列出FunctionApp中的函数。我不认为本地Az CLI和Azure PowerShell函数暴露了FunctionApp/

中的函数。
URI = "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Web/sites/<functionAppName>/functions?api-version=2015-08-01"
az rest -u $URI --method get | jq '.value[].name'
steps:
- powershell: |
#get token
$TENANTID="xxx"
$APPID="xxx"
$PASSWORD="xxx"
$result=Invoke-RestMethod -Uri https://login.microsoftonline.com/$TENANTID/oauth2/token?api-version=1.0 -Method Post -Body @{"grant_type" = "client_credentials"; "resource" = "https://management.core.windows.net/"; "client_id" = "$APPID"; "client_secret" = "$PASSWORD" }
$token=$result.access_token

##set Header
$Headers=@{
'authorization'="Bearer $token"
'host'="management.azure.com"
}

$functions = Invoke-RestMethod  -Uri "https://management.azure.com/subscriptions/<subcription id>/resourceGroups/<resource group name>/providers/Microsoft.Web/sites/<function app name>/functions?api-version=2015-08-01"  -Headers $Headers -ContentType "application/json" -Method GET


if($functions.value.Count -eq 4) {
# make pipeline to succeed
Write-Host 'Function deployment success.'
exit 0
}
else {
Write-Host 'Function deployment failed.'
exit 1
}


displayName: 'Check whether the function app deployment completed.'

如果你有什么问题,请告诉我。

相关内容

  • 没有找到相关文章

最新更新