Azure发布管道不断在应用程序服务的URL中添加“ .scm”

问题描述

我有一个名为compspiadev的应用程序服务,并且我正在使用Azure的管道来设置CI / CD。创建了构建管道,并将项目构建到工件中,以在构建管道中使用它。当我尝试部署时,出现以下错误

enter image description here

现在,我的appService没有“ .scm”。的一部分,在我的配置中,我没有将名称设置为让KUDU端点自动添加名称

enter image description here

如何解决此问题以使其正确部署?

解决方法

第一张图片中的错误消息(其中的URL部分中可见)表明您正在部署到App Service Environment(这是一个特殊的cookie)。

Azure App Service环境是一项Azure App Service功能,它提供了一个完全隔离且专用的环境,用于大规模安全地运行App Service应用程序。

我们在第二张图片中可以看到,您没有选中“部署到插槽或应用服务环境”复选框。

选中该复选框,指定“资源组”名称,将插槽名称设置为生产,您应该一切顺利。

如果部署目标是Azure App Service环境,则将插槽名称保留为生产,并仅指定资源组名称。

来源:Azure App Service Deploy task - Prerequisites for the task

,

您的猜测是正确的。这是网络错误,这是因为我们的Azure devops托管代理无法连接到 ILB ASE 的内部部署终结点。 (正如我在此ticket中所提到的,我从后端检查了您的应用程序,发现它正在连接到ILB ASE。)

您可以检查此source code actual working code snippet,由于我不知道您使用的巫婆部署方法,我无法帮助您找到确切的代码行),并且您会发现通过Azure app service deploy任务部署Azure应用程序的过程实际上是与应用程序文件通信到 Kudu服务(xxx.scm.azurewebsite.net)的过程。

例如,如果您使用从程序包运行类型来部署您的Web应用,则可以参考此code snippet

在配置ILB ASE之后,根据此doc scm 网站仅在<appname>.scm.<asename>.appserviceenvironment.net上可用。但是您应该已经知道托管代理是既不在虚拟网络中也未连接到虚拟网络的动态分发Azure VM。

这就是为什么您遇到错误,例如无法连接到远程计算机<appname>.scm.<asename>.appserviceenvironment.net的原因。

要解决此问题,您需要使用私有代理程序来执行部署管道。有关如何配置有效的自我代理以使其可以与您的专用DNS通信的信息,请遵循此reply或此blog