ASP.NET MVC Core 2.0 应用程序的 VSTS 持续部署到 Azure Web 应用程序未部署,没有错误

VSTS Continuous Deployment of ASP.NET MVC Core 2.0 app to Azure Web Apps not deploying, no errors

无论我尝试从 VSTS CD 部署最近迁移的 ASP.NET MVC Core 2.0 应用多少次,我都只能看到在迁移项目和 VSTS 之前创建的旧版本 CI构建步骤。

没有错误信息。一切都在发出快乐的声音。但是,我将内部版本号注入 appsettings.json,这样我就可以看到哪个版本正在生产中,并且我做了一些微小的美学更改,只是为了确定有一个新的软件版本正在生产中,并且我 100% 确信没有提供最新版本。

  1. 我将我的 Web 应用程序从 ASP.NET MVC Core 1.1.2 迁移到 ASP.NET MVC Core 2.0.0。最后两个成功部署的 1.1 版本是 #259 和 #260。

  2. 我使用 "preview" 2.0 步骤更新了 VSTS 构建过程,并让它生成了成功的构建。这个新版本是#270。

  3. 部署到暂存槽中的 Azure Web 应用网站时,VSTS 发布过程报告没有错误。

  4. 我交换插槽没有任何错误。

  5. 但是,我只看到构建 #259 和 #260,因为我尝试并重新尝试手动重新发布构建 #270,并在 VSTS CD 给我成功响应后重新交换插槽.

此时,我正在考虑进入 Kudu 并删除所有内容以强制 Azure 网站 Web 应用程序给我一个明显的错误消息。

然而,在我这样做之前,我想问一下我是否遗漏了什么明显的东西?与 CI 功能不同,VSTS CD 没有详细的日志记录 (AFAICT),而且我无法在 Azure Web App 端找到任何有关部署尝试的日志记录。

这是构建的历史……全部成功:

对于上下文,这是整个管道:

这是 Azure 应用服务的定义:

8 月 24 日上午 10 点更新:

今天早上,根据@starain-MSFT 的评论,我做了以下事情:

  1. 在 Azure 中,我停止了暂存和生产槽。

  2. 回到发布定义中的 VSTS,在 "Azure App Service Deploy" 任务中,我检查了,是的,"Publish using Web Deploy" 已经被检查了。

  3. 我在 "Remove additional files at destination" 中添加了复选标记。

  4. 我创建了一个新版本 (#110)。

  5. 我查看 "Deploy Azure App Service" 发布任务的日志:

2017-08-24T14:53:01.7169084Z ##[section]Starting: Deploy Azure App Service 2017-08-24T14:53:01.7419076Z ============================================================================== 2017-08-24T14:53:01.7419076Z Task : Azure App Service Deploy 2017-08-24T14:53:01.7419076Z Description : Update Azure Web App Services, Web App On Linux , Function Apps, Mobile Apps using Web Deploy / Kudu REST APIs 2017-08-24T14:53:01.7419076Z Version : 3.3.13 2017-08-24T14:53:01.7419076Z Author : Microsoft Corporation 2017-08-24T14:53:01.7419076Z Help : [More Information](https://aka.ms/azurermwebdeployreadme) 2017-08-24T14:53:01.7419076Z ============================================================================== 2017-08-24T14:53:03.7273244Z Got connection details for Azure App Service:'beastmuffin' 2017-08-24T14:53:04.4099686Z [command]"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:package='d:\a\r1\a\BeastMuffin-CI\drop0.zip' -dest:contentPath='beastmuffin',ComputerName='https://beastmuffin-staging.scm.azurewebsites.net:443/msdeploy.axd?site=beastmuffin',UserName='********',Password='********',AuthType='Basic' -enableRule:AppOffline -userAgent:VSTS_3ba069a5-b836-4fd5-9b7a-158f8f07399f_release_1_110_110_1 2017-08-24T14:53:05.4251931Z Info: Using ID '5285835e-1d30-414e-bcb6-288c207678ac' for connections to the remote server. 2017-08-24T14:53:16.2964958Z Info: Deleting file (beastmuffin\Accessibility.dll). 2017-08-24T14:53:16.2964958Z Info: Deleting file (beastmuffin\Accessibility.xml).

...大约 3000 行之后...

2017-08-24T14:54:43.0840845Z Info: Deleting file (beastmuffin\zh-Hant\System.Spatial.resources.dll). 2017-08-24T14:54:43.0840845Z Info: Deleting directory (beastmuffin\zh-Hant). 2017-08-24T14:54:43.0840845Z Total changes: 3009 (0 added, 3009 deleted, 0 updated, 0 parameters changed, 0 bytes copied) 2017-08-24T14:54:43.0980858Z Successfully deployed web package to App Service. 2017-08-24T14:54:44.9961584Z Successfully updated deployment History at https://beastmuffin-staging.scm.azurewebsites.net/deployments/1101503586484042

所以,看起来它删除了旧文件,但没有将新构建的文件部署/添加到 Azure -- 但是部署命令(根据日志)没有抛出任何异常.

只是为了确认没有真正部署任何东西,我现在访问该站点并看到:

所以,我猜目前生产槽中没有文件。

8 月 24 日下午 1 点更新:

一个新的相关细节,因为我继续调试它。

新的(预览版)应用服务编辑器显示 .zip 文件已移至 /wwwroot 文件夹,但它不会解压缩。

根据日志和 .zip 文件,我开始认为 "Deploy Azure App Service" 任务尚不支持 ASP.NET MVC Core 2.0。

为此,我在 vsts-tasks GitHub repo:

上打开了一个支持问题

https://github.com/Microsoft/vsts-tasks/issues/5111

此问题已于 GitHub (github.com/Microsoft/vsts-tasks/issues/5111) 解决。

简而言之,新的构建步骤 "dotnet publish"(在我撰写本文时处于预览状态)允许您压缩工件。

但是,我已经有了旧的 "archive files" 构建步骤,我从未从之前的 ASP.NET MVC Core 1.1 构建定义中删除它。

因此,结果是构建正在压缩已压缩的发布。在发布期间,发布被解压一次,内部 zip 文件在将其移动到 Azure 网站目标时解压。