目前,在部署Azure函数时,我们使用ADO管道任务来部署它们:
- task: AzureFunctionApp@1
displayName: 'Deploy Function'
inputs:
azureSubscription: 'our sub'
appType: 'functionApp'
appName: 'our app'
deployToSlotOrASE: true
slotName: 'staging'
resourceGroupName: 'our-rg'
package: '$(System.DefaultWorkingDirectory)/Artifact/build$(Build.BuildId).zip'
deploymentMethod: 'auto'
我们启用了自动插槽交换,这样当我们部署时,我们的代码就可以转到我们的暂存插槽。此插槽将预热,如果成功,则插槽将交换为活动。
不幸的是,这个ADO任务无法知道插槽交换是否成功。唯一可见的是Azure Portal活动日志,这些日志显示交换是否成功(以及代码是否实际上线)。
有没有一种简单的方法可以让我们从ADO管道中知道交换是否成功?
2条答案
按热度按时间yzuktlbb1#
您可以使用Azure App Service Manage task来交换插槽,而不是启用自动插槽交换。通过这种方式,您可以获得插槽交换状态。
p5cysglq2#
我发现的唯一可靠的方法是通过查询kudu日志来获取最近的生产插槽部署,以验证部署是否成功到预生产以及我的自动交换是否完成。所有其他涉及活动日志的方法都给出了错误的结果。由于我们正在检查实际的插槽特定文件,因此不必等待日志传播,并且我们知道它们是在部署时编写的,代表插槽上运行的当前代码。
我们使用一个类似于下面的Azure JavaScript脚本来执行此验证: